From 5a50ff3aeafeb18e74f2ae005e86953fb4e38ceb Mon Sep 17 00:00:00 2001 From: pfullbright Date: Wed, 25 Apr 2007 20:09:37 +0000 Subject: renamed --- jpa/plugins/org.eclipse.jpt.core/.classpath | 8 + jpa/plugins/org.eclipse.jpt.core/.cvsignore | 2 + jpa/plugins/org.eclipse.jpt.core/.project | 28 + .../.settings/org.eclipse.jdt.core.prefs | 12 + .../org.eclipse.jpt.core/META-INF/MANIFEST.MF | 54 + jpa/plugins/org.eclipse.jpt.core/build.properties | 22 + jpa/plugins/org.eclipse.jpt.core/component.xml | 1 + .../model/DaliEmfFormatter.xml | 258 + jpa/plugins/org.eclipse.jpt.core/model/core.ecore | 529 ++ .../org.eclipse.jpt.core/model/coreModels.genmodel | 656 ++ jpa/plugins/org.eclipse.jpt.core/model/java.ecore | 90 + .../org.eclipse.jpt.core/model/javaModel.ecore | 353 + .../org.eclipse.jpt.core/model/javaModel.genmodel | 173 + jpa/plugins/org.eclipse.jpt.core/model/orm.ecore | 270 + .../org.eclipse.jpt.core/model/persistence.ecore | 70 + jpa/plugins/org.eclipse.jpt.core/plugin.properties | 36 + jpa/plugins/org.eclipse.jpt.core/plugin.xml | 187 + .../property_files/jpa_core.properties | 18 + .../property_files/jpa_validation.properties | 55 + .../org.eclipse.jpt.core/schema/jpaPlatform.exsd | 122 + .../org/eclipse/jpt/core/internal/AccessType.java | 237 + .../jpt/core/internal/IAttributeMapping.java | 56 + .../eclipse/jpt/core/internal/IJpaContentNode.java | 36 + .../jpt/core/internal/IJpaCoreConstants.java | 28 + .../eclipse/jpt/core/internal/IJpaDataSource.java | 35 + .../org/eclipse/jpt/core/internal/IJpaEObject.java | 39 + .../org/eclipse/jpt/core/internal/IJpaFile.java | 56 + .../jpt/core/internal/IJpaFileContentProvider.java | 40 + .../org/eclipse/jpt/core/internal/IJpaModel.java | 40 + .../eclipse/jpt/core/internal/IJpaPlatform.java | 125 + .../org/eclipse/jpt/core/internal/IJpaProject.java | 113 + .../jpt/core/internal/IJpaRootContentNode.java | 64 + .../jpt/core/internal/IJpaSourceObject.java | 31 + .../eclipse/jpt/core/internal/IMappingKeys.java | 30 + .../jpt/core/internal/IPersistentAttribute.java | 92 + .../eclipse/jpt/core/internal/IPersistentType.java | 105 + .../org/eclipse/jpt/core/internal/ITextRange.java | 41 + .../eclipse/jpt/core/internal/ITypeMapping.java | 128 + .../org/eclipse/jpt/core/internal/IXmlEObject.java | 24 + .../eclipse/jpt/core/internal/JpaCoreFactory.java | 209 + .../eclipse/jpt/core/internal/JpaCoreMessages.java | 41 + .../eclipse/jpt/core/internal/JpaCorePackage.java | 1783 ++++ .../eclipse/jpt/core/internal/JpaCorePlugin.java | 132 + .../eclipse/jpt/core/internal/JpaDataSource.java | 185 + .../org/eclipse/jpt/core/internal/JpaEObject.java | 128 + .../src/org/eclipse/jpt/core/internal/JpaFile.java | 337 + .../jpt/core/internal/JpaFileContentRegistry.java | 65 + .../org/eclipse/jpt/core/internal/JpaModel.java | 264 + .../eclipse/jpt/core/internal/JpaModelManager.java | 543 ++ .../jpt/core/internal/JpaPlatformRegistry.java | 190 + .../org/eclipse/jpt/core/internal/JpaProject.java | 645 ++ .../core/internal/JpaProjectAdapterFactory.java | 42 + .../eclipse/jpt/core/internal/NullTypeMapping.java | 252 + .../org/eclipse/jpt/core/internal/XmlEObject.java | 217 + .../content/java/IJavaAttributeMapping.java | 47 + .../java/IJavaAttributeMappingProvider.java | 30 + .../internal/content/java/IJavaContentNodes.java | 24 + .../internal/content/java/IJavaTypeMapping.java | 40 + .../content/java/IJavaTypeMappingProvider.java | 27 + .../core/internal/content/java/JavaEObject.java | 95 + .../content/java/JavaJpaFileContentProvider.java | 37 + .../content/java/JavaPersistentAttribute.java | 652 ++ .../internal/content/java/JavaPersistentType.java | 917 ++ .../internal/content/java/JpaCompilationUnit.java | 432 + .../core/internal/content/java/JpaJavaFactory.java | 139 + .../core/internal/content/java/JpaJavaPackage.java | 787 ++ .../content/java/mappings/AbstractJavaColumn.java | 672 ++ .../content/java/mappings/AbstractJavaTable.java | 761 ++ .../java/mappings/IntAnnotationElementAdapter.java | 100 + .../core/internal/content/java/mappings/JPA.java | 294 + .../content/java/mappings/JavaAbstractQuery.java | 626 ++ .../java/mappings/JavaAssociationOverride.java | 434 + .../java/mappings/JavaAttributeMapping.java | 138 + .../java/mappings/JavaAttributeOverride.java | 238 + .../internal/content/java/mappings/JavaBasic.java | 913 ++ .../content/java/mappings/JavaBasicProvider.java | 228 + .../internal/content/java/mappings/JavaColumn.java | 448 + .../java/mappings/JavaDiscriminatorColumn.java | 726 ++ .../content/java/mappings/JavaEmbeddable.java | 99 + .../java/mappings/JavaEmbeddableProvider.java | 54 + .../content/java/mappings/JavaEmbedded.java | 543 ++ .../content/java/mappings/JavaEmbeddedId.java | 59 + .../java/mappings/JavaEmbeddedIdProvider.java | 59 + .../java/mappings/JavaEmbeddedProvider.java | 73 + .../internal/content/java/mappings/JavaEntity.java | 2761 ++++++ .../content/java/mappings/JavaEntityProvider.java | 54 + .../content/java/mappings/JavaGeneratedValue.java | 343 + .../content/java/mappings/JavaGenerator.java | 574 ++ .../internal/content/java/mappings/JavaId.java | 736 ++ .../content/java/mappings/JavaIdProvider.java | 59 + .../content/java/mappings/JavaJoinColumn.java | 477 + .../content/java/mappings/JavaJoinTable.java | 788 ++ .../content/java/mappings/JavaManyToMany.java | 86 + .../java/mappings/JavaManyToManyProvider.java | 59 + .../content/java/mappings/JavaManyToOne.java | 85 + .../java/mappings/JavaManyToOneProvider.java | 59 + .../java/mappings/JavaMappedSuperclass.java | 125 + .../mappings/JavaMappedSuperclassProvider.java | 54 + .../mappings/JavaMultiRelationshipMapping.java | 509 ++ .../content/java/mappings/JavaNamedColumn.java | 461 + .../java/mappings/JavaNamedNativeQuery.java | 353 + .../content/java/mappings/JavaNamedQuery.java | 75 + .../java/mappings/JavaNullAttributeMapping.java | 57 + .../mappings/JavaNullAttributeMappingProvider.java | 60 + .../content/java/mappings/JavaNullTypeMapping.java | 97 + .../java/mappings/JavaNullTypeMappingProvider.java | 55 + .../content/java/mappings/JavaOneToMany.java | 86 + .../java/mappings/JavaOneToManyProvider.java | 59 + .../content/java/mappings/JavaOneToOne.java | 289 + .../java/mappings/JavaOneToOneProvider.java | 59 + .../content/java/mappings/JavaOrderBy.java | 437 + .../content/java/mappings/JavaOverride.java | 293 + .../java/mappings/JavaPrimaryKeyJoinColumn.java | 695 ++ .../content/java/mappings/JavaQueryHint.java | 384 + .../java/mappings/JavaRelationshipMapping.java | 559 ++ .../content/java/mappings/JavaSecondaryTable.java | 104 + .../java/mappings/JavaSequenceGenerator.java | 340 + .../mappings/JavaSingleRelationshipMapping.java | 606 ++ .../internal/content/java/mappings/JavaTable.java | 83 + .../content/java/mappings/JavaTableGenerator.java | 1118 +++ .../content/java/mappings/JavaTransient.java | 59 + .../java/mappings/JavaTransientProvider.java | 59 + .../content/java/mappings/JavaTypeMapping.java | 262 + .../content/java/mappings/JavaVersion.java | 377 + .../content/java/mappings/JavaVersionProvider.java | 59 + .../java/mappings/JpaJavaMappingsFactory.java | 505 ++ .../java/mappings/JpaJavaMappingsPackage.java | 4838 ++++++++++ .../util/JpaJavaMappingsAdapterFactory.java | 1904 ++++ .../java/mappings/util/JpaJavaMappingsSwitch.java | 2486 ++++++ .../content/java/util/JpaJavaAdapterFactory.java | 404 + .../internal/content/java/util/JpaJavaSwitch.java | 444 + .../internal/content/orm/AbstractXmlColumn.java | 929 ++ .../content/orm/AbstractXmlNamedColumn.java | 451 + .../internal/content/orm/AbstractXmlQuery.java | 353 + .../internal/content/orm/AbstractXmlTable.java | 913 ++ .../core/internal/content/orm/EntityMappings.java | 76 + .../internal/content/orm/EntityMappingsForXml.java | 84 + .../content/orm/EntityMappingsInternal.java | 1690 ++++ .../content/orm/IXmlAttributeMappingProvider.java | 17 + .../internal/content/orm/IXmlColumnMapping.java | 73 + .../internal/content/orm/IXmlContentNodes.java | 26 + .../content/orm/IXmlTypeMappingProvider.java | 18 + .../jpt/core/internal/content/orm/OrmFactory.java | 655 ++ .../jpt/core/internal/content/orm/OrmInit.java | 56 + .../jpt/core/internal/content/orm/OrmPackage.java | 9394 ++++++++++++++++++++ .../content/orm/OrmXmlJpaFileContentProvider.java | 95 + .../core/internal/content/orm/OrmXmlResource.java | 20 + .../content/orm/PersistenceUnitDefaults.java | 143 + .../content/orm/PersistenceUnitDefaultsForXml.java | 143 + .../orm/PersistenceUnitDefaultsInternal.java | 951 ++ .../content/orm/PersistenceUnitMetadata.java | 74 + .../content/orm/PersistenceUnitMetadataForXml.java | 85 + .../orm/PersistenceUnitMetadataInternal.java | 533 ++ .../content/orm/XmlAssociationOverride.java | 281 + .../internal/content/orm/XmlAttributeMapping.java | 361 + .../internal/content/orm/XmlAttributeOverride.java | 323 + .../jpt/core/internal/content/orm/XmlBasic.java | 699 ++ .../internal/content/orm/XmlBasicProvider.java | 40 + .../jpt/core/internal/content/orm/XmlColumn.java | 672 ++ .../content/orm/XmlDiscriminatorColumn.java | 922 ++ .../core/internal/content/orm/XmlEmbeddable.java | 88 + .../content/orm/XmlEmbeddableProvider.java | 25 + .../jpt/core/internal/content/orm/XmlEmbedded.java | 354 + .../core/internal/content/orm/XmlEmbeddedId.java | 60 + .../content/orm/XmlEmbeddedIdProvider.java | 40 + .../internal/content/orm/XmlEmbeddedProvider.java | 40 + .../jpt/core/internal/content/orm/XmlEntity.java | 82 + .../core/internal/content/orm/XmlEntityForXml.java | 84 + .../internal/content/orm/XmlEntityInternal.java | 1857 ++++ .../internal/content/orm/XmlEntityProvider.java | 24 + .../internal/content/orm/XmlGeneratedValue.java | 285 + .../core/internal/content/orm/XmlGenerator.java | 490 + .../jpt/core/internal/content/orm/XmlId.java | 672 ++ .../core/internal/content/orm/XmlIdProvider.java | 40 + .../core/internal/content/orm/XmlJoinColumn.java | 456 + .../core/internal/content/orm/XmlJoinTable.java | 507 ++ .../core/internal/content/orm/XmlManyToMany.java | 61 + .../content/orm/XmlManyToManyProvider.java | 40 + .../core/internal/content/orm/XmlManyToOne.java | 60 + .../internal/content/orm/XmlManyToOneProvider.java | 41 + .../internal/content/orm/XmlMappedSuperclass.java | 104 + .../content/orm/XmlMappedSuperclassProvider.java | 24 + .../content/orm/XmlMultiRelationshipMapping.java | 24 + .../orm/XmlMultiRelationshipMappingForXml.java | 83 + .../orm/XmlMultiRelationshipMappingInternal.java | 553 ++ .../internal/content/orm/XmlNamedNativeQuery.java | 281 + .../core/internal/content/orm/XmlNamedQuery.java | 45 + .../content/orm/XmlNullAttributeMapping.java | 56 + .../core/internal/content/orm/XmlOneToMany.java | 59 + .../internal/content/orm/XmlOneToManyProvider.java | 40 + .../jpt/core/internal/content/orm/XmlOneToOne.java | 240 + .../internal/content/orm/XmlOneToOneProvider.java | 40 + .../jpt/core/internal/content/orm/XmlOrderBy.java | 327 + .../jpt/core/internal/content/orm/XmlOverride.java | 232 + .../content/orm/XmlPersistentAttribute.java | 398 + .../internal/content/orm/XmlPersistentType.java | 940 ++ .../content/orm/XmlPrimaryKeyJoinColumn.java | 411 + .../core/internal/content/orm/XmlQueryHint.java | 281 + .../content/orm/XmlRelationshipMapping.java | 451 + .../internal/content/orm/XmlRootContentNode.java | 351 + .../internal/content/orm/XmlSecondaryTable.java | 61 + .../internal/content/orm/XmlSequenceGenerator.java | 281 + .../content/orm/XmlSingleRelationshipMapping.java | 410 + .../jpt/core/internal/content/orm/XmlTable.java | 70 + .../internal/content/orm/XmlTableGenerator.java | 983 ++ .../core/internal/content/orm/XmlTransient.java | 60 + .../internal/content/orm/XmlTransientProvider.java | 40 + .../core/internal/content/orm/XmlTypeMapping.java | 653 ++ .../jpt/core/internal/content/orm/XmlVersion.java | 387 + .../internal/content/orm/XmlVersionProvider.java | 40 + .../orm/resource/AbstractColumnTranslator.java | 71 + .../orm/resource/AbstractTableTranslator.java | 59 + .../orm/resource/AccessTypeElementTranslator.java | 58 + .../resource/AssociationOverrideTranslator.java | 86 + .../orm/resource/AttributeMappingTranslator.java | 50 + .../orm/resource/AttributeMappingsTranslator.java | 119 + .../orm/resource/AttributeNameTranslator.java | 27 + .../orm/resource/AttributeOverrideTranslator.java | 70 + .../content/orm/resource/BasicTranslator.java | 79 + .../orm/resource/BooleanEnumeratorTranslator.java | 23 + .../content/orm/resource/ColumnTranslator.java | 68 + .../content/orm/resource/DebugTranslator.java | 431 + .../resource/DiscriminatorColumnTranslator.java | 84 + .../content/orm/resource/EmbeddableTranslator.java | 45 + .../content/orm/resource/EmbeddedIdTranslator.java | 41 + .../content/orm/resource/EmbeddedTranslator.java | 52 + .../orm/resource/EmptyTagBooleanTranslator.java | 52 + .../orm/resource/EntityMappingsTranslator.java | 116 + .../content/orm/resource/EntityTranslator.java | 179 + .../resource/EnumeratedTypeElementTranslator.java | 58 + .../content/orm/resource/EnumeratorTranslator.java | 42 + .../orm/resource/GeneratedValueTranslator.java | 60 + .../content/orm/resource/GeneratorTranslator.java | 52 + .../content/orm/resource/IdTranslator.java | 65 + .../content/orm/resource/JoinColumnTranslator.java | 54 + .../content/orm/resource/JoinTableTranslator.java | 87 + .../content/orm/resource/ManyToManyTranslator.java | 49 + .../content/orm/resource/ManyToOneTranslator.java | 38 + .../orm/resource/MappedSuperclassTranslator.java | 56 + .../resource/MultiObjectDependencyTranslator.java | 63 + .../orm/resource/MultiRelationshipTranslator.java | 59 + .../orm/resource/NamedNativeQueryTranslator.java | 77 + .../content/orm/resource/NamedQueryTranslator.java | 67 + .../content/orm/resource/OneToManyTranslator.java | 51 + .../content/orm/resource/OneToOneTranslator.java | 45 + .../content/orm/resource/OrderByRefTranslator.java | 79 + .../content/orm/resource/OrmXmlMapper.java | 168 + .../orm/resource/OrmXmlResourceFactory.java | 59 + .../content/orm/resource/OrmXmlResourceImpl.java | 86 + .../PersistenceUnitDefaultsTranslator.java | 100 + .../PersistenceUnitMetadataTranslator.java | 84 + .../resource/PrimaryKeyJoinColumnTranslator.java | 49 + .../content/orm/resource/QueryHintTranslator.java | 63 + .../orm/resource/RelationshipTranslator.java | 31 + .../orm/resource/SecondaryTableTranslator.java | 57 + .../orm/resource/SequenceGeneratorTranslator.java | 42 + .../orm/resource/SingleRelationshipTranslator.java | 55 + .../orm/resource/TableGeneratorTranslator.java | 67 + .../content/orm/resource/TableTranslator.java | 52 + .../resource/TemporalTypeElementTranslator.java | 58 + .../content/orm/resource/TransientTranslator.java | 36 + .../orm/resource/TypeJavaClassTranslator.java | 28 + .../orm/resource/TypeMappingTranslator.java | 64 + .../orm/resource/TypeMappingsTranslator.java | 93 + .../content/orm/resource/VersionTranslator.java | 36 + .../content/orm/util/OrmAdapterFactory.java | 2284 +++++ .../core/internal/content/orm/util/OrmSwitch.java | 3090 +++++++ .../internal/content/persistence/JavaClassRef.java | 168 + .../content/persistence/MappingFileRef.java | 231 + .../internal/content/persistence/Persistence.java | 348 + .../content/persistence/PersistenceFactory.java | 278 + .../content/persistence/PersistenceInit.java | 55 + .../content/persistence/PersistencePackage.java | 1379 +++ .../content/persistence/PersistenceUnit.java | 877 ++ .../PersistenceUnitTransactionType.java | 212 + .../PersistenceXmlJpaFileContentProvider.java | 96 + .../persistence/PersistenceXmlRootContentNode.java | 357 + .../internal/content/persistence/Properties.java | 157 + .../internal/content/persistence/Property.java | 237 + .../persistence/resource/BooleanTranslator.java | 32 + .../resource/IPersistenceXmlContentNodes.java | 17 + .../resource/JavaClassRefTranslator.java | 33 + .../resource/MappingFileTranslator.java | 33 + .../persistence/resource/PersistenceResource.java | 75 + .../resource/PersistenceTranslator.java | 143 + .../persistence/resource/PersistenceXMLMapper.java | 38 + .../resource/PersistenceXmlResourceFactory.java | 58 + .../resource/TransactionTypeTranslator.java | 36 + .../util/PersistenceAdapterFactory.java | 384 + .../persistence/util/PersistenceSwitch.java | 455 + .../jpt/core/internal/emfutility/DOMUtilities.java | 14 + .../facet/IJpaFacetDataModelProperties.java | 35 + .../internal/facet/JpaFacetDataModelProvider.java | 100 + .../internal/facet/JpaFacetInstallDelegate.java | 57 + .../facet/JpaFacetPostInstallDelegate.java | 140 + .../internal/facet/JpaFacetUninstallDelegate.java | 48 + .../jpt/core/internal/facet/JpaFacetUtils.java | 111 + .../core/internal/jdtutility/ASTNodeTextRange.java | 39 + .../jdtutility/AbstractAnnotationAdapter.java | 169 + .../AbstractDeclarationAnnotationAdapter.java | 148 + .../jdtutility/AbstractExpressionConverter.java | 50 + ...AbstractNestedDeclarationAnnotationAdapter.java | 420 + .../internal/jdtutility/AnnotationAdapter.java | 72 + .../jdtutility/AnnotationEditFormatter.java | 155 + .../jdtutility/AnnotationElementAdapter.java | 78 + .../jpt/core/internal/jdtutility/Attribute.java | 52 + .../jdtutility/AttributeAnnotationTools.java | 218 + .../jdtutility/BooleanAnnotationAdapter.java | 77 + .../BooleanStringExpressionConverter.java | 54 + .../CharacterStringExpressionConverter.java | 56 + ...inationIndexedDeclarationAnnotationAdapter.java | 490 + ...versionDeclarationAnnotationElementAdapter.java | 112 + .../jdtutility/DeclarationAnnotationAdapter.java | 64 + .../DeclarationAnnotationElementAdapter.java | 48 + .../EnumDeclarationAnnotationElementAdapter.java | 104 + .../internal/jdtutility/ExpressionConverter.java | 35 + ...ressionDeclarationAnnotationElementAdapter.java | 354 + .../core/internal/jdtutility/FieldAttribute.java | 91 + .../jdtutility/IndexedAnnotationAdapter.java | 28 + .../IndexedDeclarationAnnotationAdapter.java | 28 + .../jpt/core/internal/jdtutility/JDTTools.java | 201 + .../jpt/core/internal/jdtutility/Member.java | 394 + .../jdtutility/MemberAnnotationAdapter.java | 24 + .../jdtutility/MemberAnnotationElementAdapter.java | 103 + .../jdtutility/MemberIndexedAnnotationAdapter.java | 70 + .../core/internal/jdtutility/MethodAttribute.java | 97 + .../internal/jdtutility/ModifiedDeclaration.java | 442 + .../jdtutility/NameStringExpressionConverter.java | 57 + .../NestedDeclarationAnnotationAdapter.java | 93 + .../NestedIndexedDeclarationAnnotationAdapter.java | 331 + .../NullDeclarationAnnotationAdapter.java | 80 + .../NullDeclarationAnnotationElementAdapter.java | 53 + .../jdtutility/NullExpressionConverter.java | 52 + .../NumberStringExpressionConverter.java | 54 + .../PrimitiveTypeStringExpressionConverter.java | 61 + .../ShortCircuitAnnotationElementAdapter.java | 102 + .../jdtutility/SimpleBooleanAnnotationAdapter.java | 85 + .../SimpleDeclarationAnnotationAdapter.java | 64 + .../SimpleTypeStringExpressionConverter.java | 63 + .../jdtutility/StringExpressionConverter.java | 55 + .../eclipse/jpt/core/internal/jdtutility/Type.java | 78 + .../internal/mappings/DefaultEagerFetchType.java | 265 + .../internal/mappings/DefaultFalseBoolean.java | 264 + .../internal/mappings/DefaultLazyFetchType.java | 265 + .../core/internal/mappings/DefaultTrueBoolean.java | 264 + .../core/internal/mappings/DiscriminatorType.java | 303 + .../jpt/core/internal/mappings/EnumType.java | 266 + .../jpt/core/internal/mappings/GenerationType.java | 331 + .../core/internal/mappings/IAbstractColumn.java | 238 + .../internal/mappings/IAbstractJoinColumn.java | 115 + .../internal/mappings/IAssociationOverride.java | 152 + .../core/internal/mappings/IAttributeOverride.java | 44 + .../eclipse/jpt/core/internal/mappings/IBasic.java | 193 + .../jpt/core/internal/mappings/IColumn.java | 119 + .../jpt/core/internal/mappings/IColumnMapping.java | 37 + .../internal/mappings/IDiscriminatorColumn.java | 235 + .../jpt/core/internal/mappings/IEmbeddable.java | 25 + .../jpt/core/internal/mappings/IEmbedded.java | 144 + .../jpt/core/internal/mappings/IEmbeddedId.java | 25 + .../jpt/core/internal/mappings/IEntity.java | 636 ++ .../core/internal/mappings/IGeneratedValue.java | 87 + .../jpt/core/internal/mappings/IGenerator.java | 177 + .../eclipse/jpt/core/internal/mappings/IId.java | 163 + .../jpt/core/internal/mappings/IJoinColumn.java | 64 + .../jpt/core/internal/mappings/IJoinTable.java | 281 + .../jpt/core/internal/mappings/IManyToMany.java | 23 + .../jpt/core/internal/mappings/IManyToOne.java | 23 + .../core/internal/mappings/IMappedSuperclass.java | 25 + .../mappings/IMultiRelationshipMapping.java | 90 + .../jpt/core/internal/mappings/INamedColumn.java | 136 + .../core/internal/mappings/INamedNativeQuery.java | 84 + .../jpt/core/internal/mappings/INamedQuery.java | 25 + .../core/internal/mappings/INonOwningMapping.java | 59 + .../jpt/core/internal/mappings/IOneToMany.java | 23 + .../jpt/core/internal/mappings/IOneToOne.java | 24 + .../jpt/core/internal/mappings/IOrderBy.java | 90 + .../jpt/core/internal/mappings/IOverride.java | 81 + .../internal/mappings/IPrimaryKeyJoinColumn.java | 23 + .../eclipse/jpt/core/internal/mappings/IQuery.java | 104 + .../jpt/core/internal/mappings/IQueryHint.java | 84 + .../internal/mappings/IRelationshipMapping.java | 134 + .../core/internal/mappings/ISecondaryTable.java | 23 + .../core/internal/mappings/ISequenceGenerator.java | 87 + .../mappings/ISingleRelationshipMapping.java | 180 + .../eclipse/jpt/core/internal/mappings/ITable.java | 245 + .../core/internal/mappings/ITableGenerator.java | 386 + .../jpt/core/internal/mappings/ITransient.java | 25 + .../jpt/core/internal/mappings/IVersion.java | 76 + .../core/internal/mappings/InheritanceType.java | 303 + .../internal/mappings/JpaCoreMappingsFactory.java | 373 + .../internal/mappings/JpaCoreMappingsPackage.java | 8177 +++++++++++++++++ .../jpt/core/internal/mappings/OrderingType.java | 240 + .../mappings/RelationshipMappingTools.java | 42 + .../jpt/core/internal/mappings/TemporalType.java | 296 + .../util/JpaCoreMappingsAdapterFactory.java | 984 ++ .../mappings/util/JpaCoreMappingsSwitch.java | 1354 +++ .../platform/AbstractJoinColumnContext.java | 56 + .../platform/AssociationOverrideContext.java | 130 + .../platform/AttributeOverrideContext.java | 130 + .../jpt/core/internal/platform/BaseContext.java | 59 + .../core/internal/platform/BaseJpaPlatform.java | 175 + .../internal/platform/BaseJpaProjectContext.java | 323 + .../jpt/core/internal/platform/ColumnContext.java | 32 + .../core/internal/platform/DefaultsContext.java | 30 + .../internal/platform/GeneratorRepository.java | 53 + .../jpt/core/internal/platform/IContext.java | 24 + .../internal/platform/IGeneratorRepository.java | 29 + .../internal/platform/JavaAttributeContext.java | 105 + .../core/internal/platform/JavaBasicContext.java | 73 + .../internal/platform/JavaEmbeddableContext.java | 18 + .../internal/platform/JavaEmbeddedContext.java | 85 + .../internal/platform/JavaEmbeddedIdContext.java | 25 + .../core/internal/platform/JavaEntityContext.java | 288 + .../jpt/core/internal/platform/JavaIdContext.java | 117 + .../internal/platform/JavaManyToManyContext.java | 18 + .../internal/platform/JavaManyToOneContext.java | 24 + .../platform/JavaMappedSuperclassContext.java | 25 + .../JavaMultiRelationshipMappingContext.java | 157 + .../platform/JavaNullAttributeMappingContext.java | 25 + .../platform/JavaNullTypeMappingContext.java | 24 + .../internal/platform/JavaOneToManyContext.java | 29 + .../internal/platform/JavaOneToOneContext.java | 24 + .../platform/JavaPersistentAttributeContext.java | 115 + .../platform/JavaRelationshipMappingContext.java | 51 + .../JavaSingleRelationshipMappingContext.java | 124 + .../internal/platform/JavaTransientContext.java | 25 + .../core/internal/platform/JavaTypeContext.java | 92 + .../core/internal/platform/JavaVersionContext.java | 73 + .../core/internal/platform/JoinColumnContext.java | 137 + .../core/internal/platform/JoinTableContext.java | 176 + .../core/internal/platform/MappingFileContext.java | 158 + .../internal/platform/NullGeneratorRepository.java | 41 + .../internal/platform/PersistenceUnitContext.java | 484 + .../platform/PrimaryKeyJoinColumnContext.java | 37 + .../jpt/core/internal/platform/TableContext.java | 81 + .../jpt/core/internal/platform/TypeContext.java | 20 + .../internal/platform/XmlAttributeContext.java | 141 + .../core/internal/platform/XmlBasicContext.java | 124 + .../internal/platform/XmlEmbeddableContext.java | 18 + .../core/internal/platform/XmlEmbeddedContext.java | 106 + .../internal/platform/XmlEmbeddedIdContext.java | 21 + .../core/internal/platform/XmlEntityContext.java | 364 + .../jpt/core/internal/platform/XmlIdContext.java | 177 + .../internal/platform/XmlManyToManyContext.java | 22 + .../internal/platform/XmlManyToOneContext.java | 19 + .../platform/XmlMappedSuperclassContext.java | 19 + .../XmlMultiRelationshipMappingContext.java | 72 + .../platform/XmlNullAttributeMappingContext.java | 19 + .../internal/platform/XmlOneToManyContext.java | 29 + .../core/internal/platform/XmlOneToOneContext.java | 20 + .../platform/XmlRelationshipMappingContext.java | 76 + .../XmlSingleRelationshipMappingContext.java | 145 + .../internal/platform/XmlTransientContext.java | 22 + .../jpt/core/internal/platform/XmlTypeContext.java | 368 + .../core/internal/platform/XmlVersionContext.java | 129 + .../internal/platform/generic/GenericPlatform.java | 18 + .../internal/prefs/JpaPreferenceConstants.java | 17 + .../internal/prefs/JpaPreferenceInitializer.java | 32 + .../core/internal/synch/SynchronizeClassesJob.java | 194 + .../core/internal/util/JpaCoreAdapterFactory.java | 524 ++ .../jpt/core/internal/util/JpaCoreSwitch.java | 675 ++ .../validation/IJpaValidationMessages.java | 104 + .../jpt/core/internal/validation/JpaHelper.java | 38 + .../internal/validation/JpaValidationMessages.java | 64 + .../jpt/core/internal/validation/JpaValidator.java | 54 + 465 files changed, 123567 insertions(+) create mode 100644 jpa/plugins/org.eclipse.jpt.core/.classpath create mode 100644 jpa/plugins/org.eclipse.jpt.core/.cvsignore create mode 100644 jpa/plugins/org.eclipse.jpt.core/.project create mode 100644 jpa/plugins/org.eclipse.jpt.core/.settings/org.eclipse.jdt.core.prefs create mode 100644 jpa/plugins/org.eclipse.jpt.core/META-INF/MANIFEST.MF create mode 100644 jpa/plugins/org.eclipse.jpt.core/build.properties create mode 100644 jpa/plugins/org.eclipse.jpt.core/component.xml create mode 100644 jpa/plugins/org.eclipse.jpt.core/model/DaliEmfFormatter.xml create mode 100644 jpa/plugins/org.eclipse.jpt.core/model/core.ecore create mode 100644 jpa/plugins/org.eclipse.jpt.core/model/coreModels.genmodel create mode 100644 jpa/plugins/org.eclipse.jpt.core/model/java.ecore create mode 100644 jpa/plugins/org.eclipse.jpt.core/model/javaModel.ecore create mode 100644 jpa/plugins/org.eclipse.jpt.core/model/javaModel.genmodel create mode 100644 jpa/plugins/org.eclipse.jpt.core/model/orm.ecore create mode 100644 jpa/plugins/org.eclipse.jpt.core/model/persistence.ecore create mode 100644 jpa/plugins/org.eclipse.jpt.core/plugin.properties create mode 100644 jpa/plugins/org.eclipse.jpt.core/plugin.xml create mode 100644 jpa/plugins/org.eclipse.jpt.core/property_files/jpa_core.properties create mode 100644 jpa/plugins/org.eclipse.jpt.core/property_files/jpa_validation.properties create mode 100644 jpa/plugins/org.eclipse.jpt.core/schema/jpaPlatform.exsd create mode 100644 jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/AccessType.java create mode 100644 jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/IAttributeMapping.java create mode 100644 jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/IJpaContentNode.java create mode 100644 jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/IJpaCoreConstants.java create mode 100644 jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/IJpaDataSource.java create mode 100644 jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/IJpaEObject.java create mode 100644 jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/IJpaFile.java create mode 100644 jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/IJpaFileContentProvider.java create mode 100644 jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/IJpaModel.java create mode 100644 jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/IJpaPlatform.java create mode 100644 jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/IJpaProject.java create mode 100644 jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/IJpaRootContentNode.java create mode 100644 jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/IJpaSourceObject.java create mode 100644 jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/IMappingKeys.java create mode 100644 jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/IPersistentAttribute.java create mode 100644 jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/IPersistentType.java create mode 100644 jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/ITextRange.java create mode 100644 jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/ITypeMapping.java create mode 100644 jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/IXmlEObject.java create mode 100644 jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/JpaCoreFactory.java create mode 100644 jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/JpaCoreMessages.java create mode 100644 jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/JpaCorePackage.java create mode 100644 jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/JpaCorePlugin.java create mode 100644 jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/JpaDataSource.java create mode 100644 jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/JpaEObject.java create mode 100644 jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/JpaFile.java create mode 100644 jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/JpaFileContentRegistry.java create mode 100644 jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/JpaModel.java create mode 100644 jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/JpaModelManager.java create mode 100644 jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/JpaPlatformRegistry.java create mode 100644 jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/JpaProject.java create mode 100644 jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/JpaProjectAdapterFactory.java create mode 100644 jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/NullTypeMapping.java create mode 100644 jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/XmlEObject.java create mode 100644 jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/IJavaAttributeMapping.java create mode 100644 jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/IJavaAttributeMappingProvider.java create mode 100644 jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/IJavaContentNodes.java create mode 100644 jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/IJavaTypeMapping.java create mode 100644 jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/IJavaTypeMappingProvider.java create mode 100644 jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/JavaEObject.java create mode 100644 jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/JavaJpaFileContentProvider.java create mode 100644 jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/JavaPersistentAttribute.java create mode 100644 jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/JavaPersistentType.java create mode 100644 jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/JpaCompilationUnit.java create mode 100644 jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/JpaJavaFactory.java create mode 100644 jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/JpaJavaPackage.java create mode 100644 jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/mappings/AbstractJavaColumn.java create mode 100644 jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/mappings/AbstractJavaTable.java create mode 100644 jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/mappings/IntAnnotationElementAdapter.java create mode 100644 jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/mappings/JPA.java create mode 100644 jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/mappings/JavaAbstractQuery.java create mode 100644 jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/mappings/JavaAssociationOverride.java create mode 100644 jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/mappings/JavaAttributeMapping.java create mode 100644 jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/mappings/JavaAttributeOverride.java create mode 100644 jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/mappings/JavaBasic.java create mode 100644 jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/mappings/JavaBasicProvider.java create mode 100644 jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/mappings/JavaColumn.java create mode 100644 jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/mappings/JavaDiscriminatorColumn.java create mode 100644 jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/mappings/JavaEmbeddable.java create mode 100644 jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/mappings/JavaEmbeddableProvider.java create mode 100644 jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/mappings/JavaEmbedded.java create mode 100644 jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/mappings/JavaEmbeddedId.java create mode 100644 jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/mappings/JavaEmbeddedIdProvider.java create mode 100644 jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/mappings/JavaEmbeddedProvider.java create mode 100644 jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/mappings/JavaEntity.java create mode 100644 jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/mappings/JavaEntityProvider.java create mode 100644 jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/mappings/JavaGeneratedValue.java create mode 100644 jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/mappings/JavaGenerator.java create mode 100644 jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/mappings/JavaId.java create mode 100644 jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/mappings/JavaIdProvider.java create mode 100644 jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/mappings/JavaJoinColumn.java create mode 100644 jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/mappings/JavaJoinTable.java create mode 100644 jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/mappings/JavaManyToMany.java create mode 100644 jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/mappings/JavaManyToManyProvider.java create mode 100644 jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/mappings/JavaManyToOne.java create mode 100644 jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/mappings/JavaManyToOneProvider.java create mode 100644 jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/mappings/JavaMappedSuperclass.java create mode 100644 jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/mappings/JavaMappedSuperclassProvider.java create mode 100644 jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/mappings/JavaMultiRelationshipMapping.java create mode 100644 jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/mappings/JavaNamedColumn.java create mode 100644 jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/mappings/JavaNamedNativeQuery.java create mode 100644 jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/mappings/JavaNamedQuery.java create mode 100644 jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/mappings/JavaNullAttributeMapping.java create mode 100644 jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/mappings/JavaNullAttributeMappingProvider.java create mode 100644 jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/mappings/JavaNullTypeMapping.java create mode 100644 jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/mappings/JavaNullTypeMappingProvider.java create mode 100644 jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/mappings/JavaOneToMany.java create mode 100644 jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/mappings/JavaOneToManyProvider.java create mode 100644 jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/mappings/JavaOneToOne.java create mode 100644 jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/mappings/JavaOneToOneProvider.java create mode 100644 jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/mappings/JavaOrderBy.java create mode 100644 jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/mappings/JavaOverride.java create mode 100644 jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/mappings/JavaPrimaryKeyJoinColumn.java create mode 100644 jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/mappings/JavaQueryHint.java create mode 100644 jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/mappings/JavaRelationshipMapping.java create mode 100644 jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/mappings/JavaSecondaryTable.java create mode 100644 jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/mappings/JavaSequenceGenerator.java create mode 100644 jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/mappings/JavaSingleRelationshipMapping.java create mode 100644 jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/mappings/JavaTable.java create mode 100644 jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/mappings/JavaTableGenerator.java create mode 100644 jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/mappings/JavaTransient.java create mode 100644 jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/mappings/JavaTransientProvider.java create mode 100644 jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/mappings/JavaTypeMapping.java create mode 100644 jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/mappings/JavaVersion.java create mode 100644 jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/mappings/JavaVersionProvider.java create mode 100644 jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/mappings/JpaJavaMappingsFactory.java create mode 100644 jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/mappings/JpaJavaMappingsPackage.java create mode 100644 jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/mappings/util/JpaJavaMappingsAdapterFactory.java create mode 100644 jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/mappings/util/JpaJavaMappingsSwitch.java create mode 100644 jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/util/JpaJavaAdapterFactory.java create mode 100644 jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/util/JpaJavaSwitch.java create mode 100644 jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/AbstractXmlColumn.java create mode 100644 jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/AbstractXmlNamedColumn.java create mode 100644 jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/AbstractXmlQuery.java create mode 100644 jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/AbstractXmlTable.java create mode 100644 jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/EntityMappings.java create mode 100644 jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/EntityMappingsForXml.java create mode 100644 jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/EntityMappingsInternal.java create mode 100644 jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/IXmlAttributeMappingProvider.java create mode 100644 jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/IXmlColumnMapping.java create mode 100644 jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/IXmlContentNodes.java create mode 100644 jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/IXmlTypeMappingProvider.java create mode 100644 jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/OrmFactory.java create mode 100644 jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/OrmInit.java create mode 100644 jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/OrmPackage.java create mode 100644 jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/OrmXmlJpaFileContentProvider.java create mode 100644 jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/OrmXmlResource.java create mode 100644 jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/PersistenceUnitDefaults.java create mode 100644 jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/PersistenceUnitDefaultsForXml.java create mode 100644 jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/PersistenceUnitDefaultsInternal.java create mode 100644 jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/PersistenceUnitMetadata.java create mode 100644 jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/PersistenceUnitMetadataForXml.java create mode 100644 jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/PersistenceUnitMetadataInternal.java create mode 100644 jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/XmlAssociationOverride.java create mode 100644 jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/XmlAttributeMapping.java create mode 100644 jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/XmlAttributeOverride.java create mode 100644 jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/XmlBasic.java create mode 100644 jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/XmlBasicProvider.java create mode 100644 jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/XmlColumn.java create mode 100644 jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/XmlDiscriminatorColumn.java create mode 100644 jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/XmlEmbeddable.java create mode 100644 jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/XmlEmbeddableProvider.java create mode 100644 jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/XmlEmbedded.java create mode 100644 jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/XmlEmbeddedId.java create mode 100644 jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/XmlEmbeddedIdProvider.java create mode 100644 jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/XmlEmbeddedProvider.java create mode 100644 jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/XmlEntity.java create mode 100644 jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/XmlEntityForXml.java create mode 100644 jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/XmlEntityInternal.java create mode 100644 jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/XmlEntityProvider.java create mode 100644 jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/XmlGeneratedValue.java create mode 100644 jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/XmlGenerator.java create mode 100644 jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/XmlId.java create mode 100644 jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/XmlIdProvider.java create mode 100644 jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/XmlJoinColumn.java create mode 100644 jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/XmlJoinTable.java create mode 100644 jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/XmlManyToMany.java create mode 100644 jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/XmlManyToManyProvider.java create mode 100644 jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/XmlManyToOne.java create mode 100644 jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/XmlManyToOneProvider.java create mode 100644 jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/XmlMappedSuperclass.java create mode 100644 jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/XmlMappedSuperclassProvider.java create mode 100644 jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/XmlMultiRelationshipMapping.java create mode 100644 jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/XmlMultiRelationshipMappingForXml.java create mode 100644 jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/XmlMultiRelationshipMappingInternal.java create mode 100644 jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/XmlNamedNativeQuery.java create mode 100644 jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/XmlNamedQuery.java create mode 100644 jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/XmlNullAttributeMapping.java create mode 100644 jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/XmlOneToMany.java create mode 100644 jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/XmlOneToManyProvider.java create mode 100644 jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/XmlOneToOne.java create mode 100644 jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/XmlOneToOneProvider.java create mode 100644 jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/XmlOrderBy.java create mode 100644 jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/XmlOverride.java create mode 100644 jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/XmlPersistentAttribute.java create mode 100644 jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/XmlPersistentType.java create mode 100644 jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/XmlPrimaryKeyJoinColumn.java create mode 100644 jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/XmlQueryHint.java create mode 100644 jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/XmlRelationshipMapping.java create mode 100644 jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/XmlRootContentNode.java create mode 100644 jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/XmlSecondaryTable.java create mode 100644 jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/XmlSequenceGenerator.java create mode 100644 jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/XmlSingleRelationshipMapping.java create mode 100644 jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/XmlTable.java create mode 100644 jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/XmlTableGenerator.java create mode 100644 jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/XmlTransient.java create mode 100644 jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/XmlTransientProvider.java create mode 100644 jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/XmlTypeMapping.java create mode 100644 jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/XmlVersion.java create mode 100644 jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/XmlVersionProvider.java create mode 100644 jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/AbstractColumnTranslator.java create mode 100644 jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/AbstractTableTranslator.java create mode 100644 jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/AccessTypeElementTranslator.java create mode 100644 jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/AssociationOverrideTranslator.java create mode 100644 jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/AttributeMappingTranslator.java create mode 100644 jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/AttributeMappingsTranslator.java create mode 100644 jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/AttributeNameTranslator.java create mode 100644 jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/AttributeOverrideTranslator.java create mode 100644 jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/BasicTranslator.java create mode 100644 jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/BooleanEnumeratorTranslator.java create mode 100644 jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/ColumnTranslator.java create mode 100644 jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/DebugTranslator.java create mode 100644 jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/DiscriminatorColumnTranslator.java create mode 100644 jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/EmbeddableTranslator.java create mode 100644 jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/EmbeddedIdTranslator.java create mode 100644 jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/EmbeddedTranslator.java create mode 100644 jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/EmptyTagBooleanTranslator.java create mode 100644 jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/EntityMappingsTranslator.java create mode 100644 jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/EntityTranslator.java create mode 100644 jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/EnumeratedTypeElementTranslator.java create mode 100644 jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/EnumeratorTranslator.java create mode 100644 jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/GeneratedValueTranslator.java create mode 100644 jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/GeneratorTranslator.java create mode 100644 jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/IdTranslator.java create mode 100644 jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/JoinColumnTranslator.java create mode 100644 jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/JoinTableTranslator.java create mode 100644 jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/ManyToManyTranslator.java create mode 100644 jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/ManyToOneTranslator.java create mode 100644 jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/MappedSuperclassTranslator.java create mode 100644 jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/MultiObjectDependencyTranslator.java create mode 100644 jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/MultiRelationshipTranslator.java create mode 100644 jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/NamedNativeQueryTranslator.java create mode 100644 jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/NamedQueryTranslator.java create mode 100644 jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/OneToManyTranslator.java create mode 100644 jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/OneToOneTranslator.java create mode 100644 jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/OrderByRefTranslator.java create mode 100644 jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/OrmXmlMapper.java create mode 100644 jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/OrmXmlResourceFactory.java create mode 100644 jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/OrmXmlResourceImpl.java create mode 100644 jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/PersistenceUnitDefaultsTranslator.java create mode 100644 jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/PersistenceUnitMetadataTranslator.java create mode 100644 jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/PrimaryKeyJoinColumnTranslator.java create mode 100644 jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/QueryHintTranslator.java create mode 100644 jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/RelationshipTranslator.java create mode 100644 jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/SecondaryTableTranslator.java create mode 100644 jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/SequenceGeneratorTranslator.java create mode 100644 jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/SingleRelationshipTranslator.java create mode 100644 jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/TableGeneratorTranslator.java create mode 100644 jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/TableTranslator.java create mode 100644 jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/TemporalTypeElementTranslator.java create mode 100644 jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/TransientTranslator.java create mode 100644 jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/TypeJavaClassTranslator.java create mode 100644 jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/TypeMappingTranslator.java create mode 100644 jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/TypeMappingsTranslator.java create mode 100644 jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/VersionTranslator.java create mode 100644 jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/util/OrmAdapterFactory.java create mode 100644 jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/util/OrmSwitch.java create mode 100644 jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/persistence/JavaClassRef.java create mode 100644 jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/persistence/MappingFileRef.java create mode 100644 jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/persistence/Persistence.java create mode 100644 jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/persistence/PersistenceFactory.java create mode 100644 jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/persistence/PersistenceInit.java create mode 100644 jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/persistence/PersistencePackage.java create mode 100644 jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/persistence/PersistenceUnit.java create mode 100644 jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/persistence/PersistenceUnitTransactionType.java create mode 100644 jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/persistence/PersistenceXmlJpaFileContentProvider.java create mode 100644 jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/persistence/PersistenceXmlRootContentNode.java create mode 100644 jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/persistence/Properties.java create mode 100644 jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/persistence/Property.java create mode 100644 jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/persistence/resource/BooleanTranslator.java create mode 100644 jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/persistence/resource/IPersistenceXmlContentNodes.java create mode 100644 jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/persistence/resource/JavaClassRefTranslator.java create mode 100644 jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/persistence/resource/MappingFileTranslator.java create mode 100644 jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/persistence/resource/PersistenceResource.java create mode 100644 jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/persistence/resource/PersistenceTranslator.java create mode 100644 jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/persistence/resource/PersistenceXMLMapper.java create mode 100644 jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/persistence/resource/PersistenceXmlResourceFactory.java create mode 100644 jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/persistence/resource/TransactionTypeTranslator.java create mode 100644 jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/persistence/util/PersistenceAdapterFactory.java create mode 100644 jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/persistence/util/PersistenceSwitch.java create mode 100644 jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/emfutility/DOMUtilities.java create mode 100644 jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/facet/IJpaFacetDataModelProperties.java create mode 100644 jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/facet/JpaFacetDataModelProvider.java create mode 100644 jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/facet/JpaFacetInstallDelegate.java create mode 100644 jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/facet/JpaFacetPostInstallDelegate.java create mode 100644 jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/facet/JpaFacetUninstallDelegate.java create mode 100644 jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/facet/JpaFacetUtils.java create mode 100644 jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jdtutility/ASTNodeTextRange.java create mode 100644 jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jdtutility/AbstractAnnotationAdapter.java create mode 100644 jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jdtutility/AbstractDeclarationAnnotationAdapter.java create mode 100644 jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jdtutility/AbstractExpressionConverter.java create mode 100644 jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jdtutility/AbstractNestedDeclarationAnnotationAdapter.java create mode 100644 jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jdtutility/AnnotationAdapter.java create mode 100644 jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jdtutility/AnnotationEditFormatter.java create mode 100644 jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jdtutility/AnnotationElementAdapter.java create mode 100644 jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jdtutility/Attribute.java create mode 100644 jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jdtutility/AttributeAnnotationTools.java create mode 100644 jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jdtutility/BooleanAnnotationAdapter.java create mode 100644 jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jdtutility/BooleanStringExpressionConverter.java create mode 100644 jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jdtutility/CharacterStringExpressionConverter.java create mode 100644 jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jdtutility/CombinationIndexedDeclarationAnnotationAdapter.java create mode 100644 jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jdtutility/ConversionDeclarationAnnotationElementAdapter.java create mode 100644 jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jdtutility/DeclarationAnnotationAdapter.java create mode 100644 jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jdtutility/DeclarationAnnotationElementAdapter.java create mode 100644 jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jdtutility/EnumDeclarationAnnotationElementAdapter.java create mode 100644 jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jdtutility/ExpressionConverter.java create mode 100644 jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jdtutility/ExpressionDeclarationAnnotationElementAdapter.java create mode 100644 jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jdtutility/FieldAttribute.java create mode 100644 jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jdtutility/IndexedAnnotationAdapter.java create mode 100644 jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jdtutility/IndexedDeclarationAnnotationAdapter.java create mode 100644 jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jdtutility/JDTTools.java create mode 100644 jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jdtutility/Member.java create mode 100644 jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jdtutility/MemberAnnotationAdapter.java create mode 100644 jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jdtutility/MemberAnnotationElementAdapter.java create mode 100644 jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jdtutility/MemberIndexedAnnotationAdapter.java create mode 100644 jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jdtutility/MethodAttribute.java create mode 100644 jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jdtutility/ModifiedDeclaration.java create mode 100644 jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jdtutility/NameStringExpressionConverter.java create mode 100644 jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jdtutility/NestedDeclarationAnnotationAdapter.java create mode 100644 jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jdtutility/NestedIndexedDeclarationAnnotationAdapter.java create mode 100644 jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jdtutility/NullDeclarationAnnotationAdapter.java create mode 100644 jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jdtutility/NullDeclarationAnnotationElementAdapter.java create mode 100644 jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jdtutility/NullExpressionConverter.java create mode 100644 jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jdtutility/NumberStringExpressionConverter.java create mode 100644 jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jdtutility/PrimitiveTypeStringExpressionConverter.java create mode 100644 jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jdtutility/ShortCircuitAnnotationElementAdapter.java create mode 100644 jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jdtutility/SimpleBooleanAnnotationAdapter.java create mode 100644 jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jdtutility/SimpleDeclarationAnnotationAdapter.java create mode 100644 jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jdtutility/SimpleTypeStringExpressionConverter.java create mode 100644 jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jdtutility/StringExpressionConverter.java create mode 100644 jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jdtutility/Type.java create mode 100644 jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/mappings/DefaultEagerFetchType.java create mode 100644 jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/mappings/DefaultFalseBoolean.java create mode 100644 jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/mappings/DefaultLazyFetchType.java create mode 100644 jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/mappings/DefaultTrueBoolean.java create mode 100644 jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/mappings/DiscriminatorType.java create mode 100644 jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/mappings/EnumType.java create mode 100644 jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/mappings/GenerationType.java create mode 100644 jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/mappings/IAbstractColumn.java create mode 100644 jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/mappings/IAbstractJoinColumn.java create mode 100644 jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/mappings/IAssociationOverride.java create mode 100644 jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/mappings/IAttributeOverride.java create mode 100644 jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/mappings/IBasic.java create mode 100644 jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/mappings/IColumn.java create mode 100644 jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/mappings/IColumnMapping.java create mode 100644 jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/mappings/IDiscriminatorColumn.java create mode 100644 jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/mappings/IEmbeddable.java create mode 100644 jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/mappings/IEmbedded.java create mode 100644 jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/mappings/IEmbeddedId.java create mode 100644 jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/mappings/IEntity.java create mode 100644 jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/mappings/IGeneratedValue.java create mode 100644 jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/mappings/IGenerator.java create mode 100644 jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/mappings/IId.java create mode 100644 jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/mappings/IJoinColumn.java create mode 100644 jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/mappings/IJoinTable.java create mode 100644 jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/mappings/IManyToMany.java create mode 100644 jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/mappings/IManyToOne.java create mode 100644 jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/mappings/IMappedSuperclass.java create mode 100644 jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/mappings/IMultiRelationshipMapping.java create mode 100644 jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/mappings/INamedColumn.java create mode 100644 jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/mappings/INamedNativeQuery.java create mode 100644 jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/mappings/INamedQuery.java create mode 100644 jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/mappings/INonOwningMapping.java create mode 100644 jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/mappings/IOneToMany.java create mode 100644 jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/mappings/IOneToOne.java create mode 100644 jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/mappings/IOrderBy.java create mode 100644 jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/mappings/IOverride.java create mode 100644 jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/mappings/IPrimaryKeyJoinColumn.java create mode 100644 jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/mappings/IQuery.java create mode 100644 jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/mappings/IQueryHint.java create mode 100644 jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/mappings/IRelationshipMapping.java create mode 100644 jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/mappings/ISecondaryTable.java create mode 100644 jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/mappings/ISequenceGenerator.java create mode 100644 jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/mappings/ISingleRelationshipMapping.java create mode 100644 jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/mappings/ITable.java create mode 100644 jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/mappings/ITableGenerator.java create mode 100644 jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/mappings/ITransient.java create mode 100644 jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/mappings/IVersion.java create mode 100644 jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/mappings/InheritanceType.java create mode 100644 jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/mappings/JpaCoreMappingsFactory.java create mode 100644 jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/mappings/JpaCoreMappingsPackage.java create mode 100644 jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/mappings/OrderingType.java create mode 100644 jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/mappings/RelationshipMappingTools.java create mode 100644 jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/mappings/TemporalType.java create mode 100644 jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/mappings/util/JpaCoreMappingsAdapterFactory.java create mode 100644 jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/mappings/util/JpaCoreMappingsSwitch.java create mode 100644 jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/AbstractJoinColumnContext.java create mode 100644 jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/AssociationOverrideContext.java create mode 100644 jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/AttributeOverrideContext.java create mode 100644 jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/BaseContext.java create mode 100644 jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/BaseJpaPlatform.java create mode 100644 jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/BaseJpaProjectContext.java create mode 100644 jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/ColumnContext.java create mode 100644 jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/DefaultsContext.java create mode 100644 jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/GeneratorRepository.java create mode 100644 jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/IContext.java create mode 100644 jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/IGeneratorRepository.java create mode 100644 jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/JavaAttributeContext.java create mode 100644 jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/JavaBasicContext.java create mode 100644 jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/JavaEmbeddableContext.java create mode 100644 jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/JavaEmbeddedContext.java create mode 100644 jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/JavaEmbeddedIdContext.java create mode 100644 jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/JavaEntityContext.java create mode 100644 jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/JavaIdContext.java create mode 100644 jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/JavaManyToManyContext.java create mode 100644 jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/JavaManyToOneContext.java create mode 100644 jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/JavaMappedSuperclassContext.java create mode 100644 jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/JavaMultiRelationshipMappingContext.java create mode 100644 jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/JavaNullAttributeMappingContext.java create mode 100644 jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/JavaNullTypeMappingContext.java create mode 100644 jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/JavaOneToManyContext.java create mode 100644 jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/JavaOneToOneContext.java create mode 100644 jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/JavaPersistentAttributeContext.java create mode 100644 jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/JavaRelationshipMappingContext.java create mode 100644 jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/JavaSingleRelationshipMappingContext.java create mode 100644 jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/JavaTransientContext.java create mode 100644 jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/JavaTypeContext.java create mode 100644 jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/JavaVersionContext.java create mode 100644 jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/JoinColumnContext.java create mode 100644 jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/JoinTableContext.java create mode 100644 jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/MappingFileContext.java create mode 100644 jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/NullGeneratorRepository.java create mode 100644 jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/PersistenceUnitContext.java create mode 100644 jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/PrimaryKeyJoinColumnContext.java create mode 100644 jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/TableContext.java create mode 100644 jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/TypeContext.java create mode 100644 jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/XmlAttributeContext.java create mode 100644 jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/XmlBasicContext.java create mode 100644 jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/XmlEmbeddableContext.java create mode 100644 jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/XmlEmbeddedContext.java create mode 100644 jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/XmlEmbeddedIdContext.java create mode 100644 jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/XmlEntityContext.java create mode 100644 jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/XmlIdContext.java create mode 100644 jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/XmlManyToManyContext.java create mode 100644 jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/XmlManyToOneContext.java create mode 100644 jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/XmlMappedSuperclassContext.java create mode 100644 jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/XmlMultiRelationshipMappingContext.java create mode 100644 jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/XmlNullAttributeMappingContext.java create mode 100644 jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/XmlOneToManyContext.java create mode 100644 jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/XmlOneToOneContext.java create mode 100644 jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/XmlRelationshipMappingContext.java create mode 100644 jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/XmlSingleRelationshipMappingContext.java create mode 100644 jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/XmlTransientContext.java create mode 100644 jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/XmlTypeContext.java create mode 100644 jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/XmlVersionContext.java create mode 100644 jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/generic/GenericPlatform.java create mode 100644 jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/prefs/JpaPreferenceConstants.java create mode 100644 jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/prefs/JpaPreferenceInitializer.java create mode 100644 jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/synch/SynchronizeClassesJob.java create mode 100644 jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/util/JpaCoreAdapterFactory.java create mode 100644 jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/util/JpaCoreSwitch.java create mode 100644 jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/validation/IJpaValidationMessages.java create mode 100644 jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/validation/JpaHelper.java create mode 100644 jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/validation/JpaValidationMessages.java create mode 100644 jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/validation/JpaValidator.java 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 @@ + + + + + + + + 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 @@ + + + org.eclipse.jpt.core + + + + + + org.eclipse.jdt.core.javabuilder + + + + + org.eclipse.pde.ManifestBuilder + + + + + org.eclipse.pde.SchemaBuilder + + + + + + org.eclipse.pde.PluginNature + org.eclipse.jdt.core.javanature + + 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 @@ + \ 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 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 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 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 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 @@ + + + core.ecore + java.ecore + orm.ecore + persistence.ecore + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 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 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 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 @@ + + + +
+ + + + + +
+ + + + + +
+ + + + + +
+ + + + + +
+ + + + +
+ + + + +
+ + + + + +
+ + + + +
+ + + + +
+ + + + + +
+ + + + +
+ + + + + + +
+ + + + +
+ + + + + +
+ + + + +
+ + + + +
+ + + + + + +
+ + + + + +
+ + + + +
+ + + + + +
+ + + + +
+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + +
+ + + + + + + + + + +
+ + + + +
+ + + + +
+ + + + + +
+ + + + +
+ + + + + +
+ + + + +
+ + + + +
+ + + + + +
+ + + + + + + + + + + + + + + + + +
+ + + + +
+ + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + +
+ + + + + + + + +
+ + + + + + + + + +
+ + + + + +
+ + + +
+ + + + +
+ + + + +
+ + + + +
+ + + + + + + + +
+ + + + +
+ + + + 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 @@ + + + javaModel.ecore + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 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 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 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 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 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 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 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 + + + Only allowing file names of persistence.xml. + + + + + + + + + + + + + + + + + + + + + + + + %JPA_FACET_DESCRIPTION + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 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 @@ + + + + + + + + + [Enter description of this extension point.] + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + An translatable string representation of the platform. + + + + + + + + + + + + + + + + + + + + + + + + + [Enter the first release in which this extension point appears.] + + + + + + + + + [Enter extension point usage example here.] + + + + + + + + + [Enter API information here.] + + + + + + + + + [Enter information about supplied implementation of this extension point.] + + + + + + + + + + + + + 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 @@ +/** + * + * + * + * $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; + +/** + * + * A representation of the literals of the enumeration 'Access Type', + * and utility methods for working with them. + * + * @see org.eclipse.jpt.core.internal.JpaCorePackage#getAccessType() + * @model + * @generated + */ +public enum AccessType implements Enumerator { + /** + * The 'Default' literal object. + * + * + * @see #DEFAULT_VALUE + * @generated + * @ordered + */ + DEFAULT(0, "Default", "Default"), + /** + * The 'PROPERTY' literal object. + * + * + * @see #PROPERTY_VALUE + * @generated + * @ordered + */ + PROPERTY(1, "PROPERTY", "Property"), + /** + * The 'FIELD' literal object. + * + * + * @see #FIELD_VALUE + * @generated + * @ordered + */ + FIELD(2, "FIELD", "Field"); + /** + * The 'Default' literal value. + * + *

+ * If the meaning of 'Default' literal object isn't clear, + * there really should be more of a description here... + *

+ * + * @see #DEFAULT + * @model name="Default" + * @generated + * @ordered + */ + public static final int DEFAULT_VALUE = 0; + + /** + * The 'PROPERTY' literal value. + * + *

+ * If the meaning of 'PROPERTY' literal object isn't clear, + * there really should be more of a description here... + *

+ * + * @see #PROPERTY + * @model literal="Property" + * @generated + * @ordered + */ + public static final int PROPERTY_VALUE = 1; + + /** + * The 'FIELD' literal value. + * + *

+ * If the meaning of 'FIELD' literal object isn't clear, + * there really should be more of a description here... + *

+ * + * @see #FIELD + * @model literal="Field" + * @generated + * @ordered + */ + public static final int FIELD_VALUE = 2; + + /** + * An array of all the 'Access Type' enumerators. + * + * + * @generated + */ + private static final AccessType[] VALUES_ARRAY = new AccessType[] { + DEFAULT, PROPERTY, FIELD, + }; + + /** + * A public read-only list of all the 'Access Type' enumerators. + * + * + * @generated + */ + public static final List VALUES = Collections.unmodifiableList(Arrays.asList(VALUES_ARRAY)); + + /** + * Returns the 'Access Type' literal with the specified literal value. + * + * + * @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 'Access Type' literal with the specified name. + * + * + * @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 'Access Type' literal with the specified integer value. + * + * + * @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; + } + + /** + * + * + * @generated + */ + private final int value; + + /** + * + * + * @generated + */ + private final String name; + + /** + * + * + * @generated + */ + private final String literal; + + /** + * Only this class can construct instances. + * + * + * @generated + */ + private AccessType(int value, String name, String literal) { + this.value = value; + this.name = name; + this.literal = literal; + } + + /** + * + * + * @generated + */ + public int getValue() { + return value; + } + + /** + * + * + * @generated + */ + public String getName() { + return name; + } + + /** + * + * + * @generated + */ + public String getLiteral() { + return literal; + } + + /** + * Returns the literal value of the enumerator, which is its string representation. + * + * + * @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; + +/** + * + * A representation of the model object 'IAttribute Mapping'. + * + * + * + * @see org.eclipse.jpt.core.internal.JpaCorePackage#getIAttributeMapping() + * @model kind="class" interface="true" abstract="true" + * @generated + */ +public interface IAttributeMapping extends IJpaSourceObject +{ + /** + * + * + * @model kind="operation" required="true" + * @generated + */ + IPersistentAttribute getPersistentAttribute(); + + /** + * + * + * @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; + +/** + * + * A representation of the model object 'IJpa Content Node'. + * + * + * + * @see org.eclipse.jpt.core.internal.JpaCorePackage#getIJpaContentNode() + * @model kind="class" interface="true" abstract="true" + * @generated + */ +public interface IJpaContentNode extends IJpaSourceObject +{ + /** + * + * + * @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; + +/** + * + * A representation of the model object 'IJpa Data Source'. + * + * + * + * @see org.eclipse.jpt.core.internal.JpaCorePackage#getIJpaDataSource() + * @model kind="class" interface="true" abstract="true" + * @generated + */ +public interface IJpaDataSource extends IJpaEObject +{ + /** + * + * + * @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; + +/** + * + * A representation of the model object 'IPersistence Element'. + * + * + * + * @see org.eclipse.jpt.core.internal.JpaCorePackage#getIJpaEObject() + * @model kind="class" interface="true" abstract="true" + * @generated + */ +public interface IJpaEObject extends EObject +{ + /** + * + * + * @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; + +/** + * + * A representation of the model object 'IPersistence File'. + * + * + * + * @see org.eclipse.jpt.core.internal.JpaCorePackage#getIJpaFile() + * @model kind="class" interface="true" abstract="true" + * @generated + */ +public interface IJpaFile extends IJpaEObject +{ + /** + * + *

+ * If the meaning of the 'Content' containment reference isn't clear, + * there really should be more of a description here... + *

+ * + * @model kind="operation" + * @generated + */ + IJpaRootContentNode getContent(); + + /** + * + * + * @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 null. + */ + 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; + +/** + * + * A representation of the model object 'IJpa Model'. + * + * + * + * @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 null 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 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 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 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; + +/** + * + * A representation of the model object 'IJpa Project'. + * + * + * + * @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(); + + /** + * + * + * @model kind="operation" required="true" + * @generated + */ + IJpaModel getModel(); + + IJpaPlatform getPlatform(); + + /** + * + * + * @model platformIdRequired="true" platformIdOrdered="false" + * @generated + */ + void setPlatform(String platformId); + + /** + * + * + * @model kind="operation" required="true" + * @generated + */ + IJpaDataSource getDataSource(); + + /** + * + * + * @model connectionProfileNameUnique="false" connectionProfileNameRequired="true" connectionProfileNameOrdered="false" + * @generated + */ + void setDataSource(String connectionProfileName); + + /** + * Returns the IJpaFile corresponding to the given IFile. + * Returns null 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 jpaFiles(String contentType); + + /** + * Returns a (non-modifiable) Iterator on all the IJpaFiles in the project. + */ + Iterator 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 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; + +/** + * + * A representation of the model object 'IJpa Root Content Node'. + * + * + *

+ * The following features are supported: + *

    + *
  • {@link org.eclipse.jpt.core.internal.IJpaRootContentNode#getJpaFile Jpa File}
  • + *
+ *

+ * + * @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 'Jpa File' container reference. + * The default value is "". + * It is bidirectional and its opposite is '{@link org.eclipse.jpt.core.internal.JpaFile#getContent Content}'. + * + *

+ * If the meaning of the 'Jpa File' container reference isn't clear, + * there really should be more of a description here... + *

+ * + * @return the value of the 'Jpa File' 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 null. + */ + 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; + +/** + * + * A representation of the model object 'IPersistent Attribute'. + * + * + *

+ * The following features are supported: + *

    + *
  • {@link org.eclipse.jpt.core.internal.IPersistentAttribute#getMappingKey Mapping Key}
  • + *
+ *

+ * + * @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 'Mapping Key' attribute. + * + *

+ * If the meaning of the 'Mapping Key' attribute isn't clear, + * there really should be more of a description here... + *

+ * + * @return the value of the 'Mapping Key' 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(); + + /** + * + * + * @model kind="operation" required="true" + * @generated + */ + IAttributeMapping getMapping(); + + /** + * + * + * @model required="true" + * @generated + */ + ITypeMapping typeMapping(); + + /** + * + * + * @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; + +/** + * + * A representation of the model object 'IPersistent Type'. + * + * + *

+ * The following features are supported: + *

    + *
  • {@link org.eclipse.jpt.core.internal.IPersistentType#getMappingKey Mapping Key}
  • + *
+ *

+ * + * @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 'Mapping Key' attribute. + * + *

+ * If the meaning of the 'Mapping Key' attribute isn't clear, + * there really should be more of a description here... + *

+ * + * @return the value of the 'Mapping Key' 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 Mapping Key}' attribute. + * + * + * @param value the new value of the 'Mapping Key' attribute. + * @see #getMappingKey() + * @generated + */ + void setMappingKey(String value); + + /** + * Returns an iterator on all mapping keys that are available for this type. + */ + Iterator candidateMappingKeys(); + + /** + * + *

+ * If the meaning of the 'Mapping' containment reference isn't clear, + * there really should be more of a description here... + *

+ * + * @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 attributes(); + + /** + * Return a read-only iterator of the all the IPersistentAttributes + * in the hierarchy + * @return + */ + Iterator allAttributes(); + + Iterator 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 + *

+ * This interface is not intended to be implemented by clients. + *

+ */ +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; + +/** + * + * A representation of the model object 'I Type Mapping'. + * + * + *

+ * The following features are supported: + *

    + *
  • {@link org.eclipse.jpt.core.internal.ITypeMapping#getName Name}
  • + *
  • {@link org.eclipse.jpt.core.internal.ITypeMapping#getTableName Table Name}
  • + *
+ *

+ * + * @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 'Name' attribute. + * + *

+ * If the meaning of the 'Name' attribute isn't clear, + * there really should be more of a description here... + *

+ * + * @return the value of the 'Name' 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 'Table Name' attribute. + * + *

+ * If the meaning of the 'Table Name' attribute isn't clear, + * there really should be more of a description here... + *

+ * + * @return the value of the 'Table Name' 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 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 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 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 overridableAttributeNames(); + + /** + * Return an Iterator of attribute names. The attributes must be OneToOneMappings or ManyToOneMappings + * found in any MappedSuperclass in the inheritance hierarchy + */ + Iterator 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; + +/** + * + * A representation of the model object 'IXml EObject'. + * + * + * + * @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; + +/** + * + * The Factory for the model. + * It provides a create method for each non-abstract class of the model. + * + * @see org.eclipse.jpt.core.internal.JpaCorePackage + * @generated + */ +public class JpaCoreFactory extends EFactoryImpl +{ + /** + * The singleton instance of the factory. + * + * + * @generated + */ + public static final JpaCoreFactory eINSTANCE = init(); + + /** + * Creates the default factory implementation. + * + * + * @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. + * + * + * @generated + */ + public JpaCoreFactory() { + super(); + } + + /** + * + * + * @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"); + } + } + + /** + * + * + * @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"); + } + } + + /** + * + * + * @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"); + } + } + + /** + * + * + * @generated + */ + public JpaModel createJpaModel() { + JpaModel jpaModel = new JpaModel(); + return jpaModel; + } + + /** + * + * + * @generated + */ + public JpaProject createJpaProject() { + JpaProject jpaProject = new JpaProject(); + return jpaProject; + } + + /** + * + * + * @generated + */ + public JpaDataSource createJpaDataSource() { + JpaDataSource jpaDataSource = new JpaDataSource(); + return jpaDataSource; + } + + /** + * + * + * @generated + */ + public JpaFile createJpaFile() { + JpaFile jpaFile = new JpaFile(); + return jpaFile; + } + + /** + * + * + * @generated + */ + public NullTypeMapping createNullTypeMapping() { + NullTypeMapping nullTypeMapping = new NullTypeMapping(); + return nullTypeMapping; + } + + /** + * + * + * @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; + } + + /** + * + * + * @generated + */ + public String convertAccessTypeToString(EDataType eDataType, Object instanceValue) { + return instanceValue == null ? null : instanceValue.toString(); + } + + /** + * + * + * @generated + */ + public JpaCorePackage getJpaCorePackage() { + return (JpaCorePackage) getEPackage(); + } + + /** + * + * + * @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; + +/** + * + * The Package for the model. + * It contains accessors for the meta objects to represent + *
    + *
  • each class,
  • + *
  • each feature of each class,
  • + *
  • each enum,
  • + *
  • and each data type
  • + *
+ * + * @see org.eclipse.jpt.core.internal.JpaCoreFactory + * @model kind="package" + * @generated + */ +public class JpaCorePackage extends EPackageImpl +{ + /** + * The package name. + * + * + * @generated + */ + public static final String eNAME = "internal"; + + /** + * The package namespace URI. + * + * + * @generated + */ + public static final String eNS_URI = "jpt.core.xmi"; + + /** + * The package namespace name. + * + * + * @generated + */ + public static final String eNS_PREFIX = "jpt.core"; + + /** + * The singleton instance of the package. + * + * + * @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 IJpa Model}' class. + * + * + * @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 'IJpa Model' class. + * + * + * @generated + * @ordered + */ + public static final int IJPA_MODEL_FEATURE_COUNT = 0; + + /** + * The meta object id for the '{@link org.eclipse.jpt.core.internal.IJpaEObject IJpa EObject}' class. + * + * + * @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 'IJpa EObject' class. + * + * + * @generated + * @ordered + */ + public static final int IJPA_EOBJECT_FEATURE_COUNT = 0; + + /** + * The meta object id for the '{@link org.eclipse.jpt.core.internal.JpaEObject Jpa EObject}' class. + * + * + * @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 'Jpa EObject' class. + * + * + * @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 Jpa Model}' class. + * + * + * @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 'Projects' containment reference list. + * + * + * @generated + * @ordered + */ + public static final int JPA_MODEL__PROJECTS = JPA_EOBJECT_FEATURE_COUNT + 0; + + /** + * The number of structural features of the 'Jpa Model' class. + * + * + * @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 Xml EObject}' class. + * + * + * @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 IJpa Project}' class. + * + * + * @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 'IJpa Project' class. + * + * + * @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 Jpa Project}' class. + * + * + * @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 'Platform' reference. + * + * + * @generated + * @ordered + */ + public static final int JPA_PROJECT__PLATFORM = JPA_EOBJECT_FEATURE_COUNT + 0; + + /** + * The feature id for the 'Data Source' containment reference. + * + * + * @generated + * @ordered + */ + public static final int JPA_PROJECT__DATA_SOURCE = JPA_EOBJECT_FEATURE_COUNT + 1; + + /** + * The feature id for the 'Files' containment reference list. + * + * + * @generated + * @ordered + */ + public static final int JPA_PROJECT__FILES = JPA_EOBJECT_FEATURE_COUNT + 2; + + /** + * The number of structural features of the 'Jpa Project' class. + * + * + * @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 IJpa Platform}' class. + * + * + * @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 'IJpa Platform' class. + * + * + * @generated + * @ordered + */ + public static final int IJPA_PLATFORM_FEATURE_COUNT = 0; + + /** + * The meta object id for the '{@link org.eclipse.jpt.core.internal.IJpaDataSource IJpa Data Source}' class. + * + * + * @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 'IJpa Data Source' class. + * + * + * @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 Jpa Data Source}' class. + * + * + * @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 'Connection Profile Name' attribute. + * + * + * @generated + * @ordered + */ + public static final int JPA_DATA_SOURCE__CONNECTION_PROFILE_NAME = JPA_EOBJECT_FEATURE_COUNT + 0; + + /** + * The number of structural features of the 'Jpa Data Source' class. + * + * + * @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 IJpa File}' class. + * + * + * @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 'IJpa File' class. + * + * + * @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 Jpa File}' class. + * + * + * @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 'Content Id' attribute. + * + * + * @generated + * @ordered + */ + public static final int JPA_FILE__CONTENT_ID = JPA_EOBJECT_FEATURE_COUNT + 0; + + /** + * The feature id for the 'Content' containment reference. + * + * + * @generated + * @ordered + */ + public static final int JPA_FILE__CONTENT = JPA_EOBJECT_FEATURE_COUNT + 1; + + /** + * The number of structural features of the 'Jpa File' class. + * + * + * @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 IJpa Source Object}' class. + * + * + * @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 'IJpa Source Object' class. + * + * + * @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 IXml EObject}' class. + * + * + * @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 'IXml EObject' class. + * + * + * @generated + * @ordered + */ + public static final int IXML_EOBJECT_FEATURE_COUNT = IJPA_EOBJECT_FEATURE_COUNT + 0; + + /** + * The number of structural features of the 'Xml EObject' class. + * + * + * @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 IJpa Content Node}' class. + * + * + * @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 'IJpa Content Node' class. + * + * + * @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 IJpa Root Content Node}' class. + * + * + * @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 'Jpa File' container reference. + * + * + * @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 'IJpa Root Content Node' class. + * + * + * @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 IPersistent Type}' class. + * + * + * @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 'Mapping Key' attribute. + * + * + * @generated + * @ordered + */ + public static final int IPERSISTENT_TYPE__MAPPING_KEY = IJPA_CONTENT_NODE_FEATURE_COUNT + 0; + + /** + * The number of structural features of the 'IPersistent Type' class. + * + * + * @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 IType Mapping}' class. + * + * + * @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 'Name' attribute. + * + * + * @generated + * @ordered + */ + public static final int ITYPE_MAPPING__NAME = IJPA_SOURCE_OBJECT_FEATURE_COUNT + 0; + + /** + * The feature id for the 'Table Name' attribute. + * + * + * @generated + * @ordered + */ + public static final int ITYPE_MAPPING__TABLE_NAME = IJPA_SOURCE_OBJECT_FEATURE_COUNT + 1; + + /** + * The number of structural features of the 'IType Mapping' class. + * + * + * @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 Null Type Mapping}' class. + * + * + * @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 'Name' attribute. + * + * + * @generated + * @ordered + */ + public static final int NULL_TYPE_MAPPING__NAME = JPA_EOBJECT_FEATURE_COUNT + 0; + + /** + * The feature id for the 'Table Name' attribute. + * + * + * @generated + * @ordered + */ + public static final int NULL_TYPE_MAPPING__TABLE_NAME = JPA_EOBJECT_FEATURE_COUNT + 1; + + /** + * The number of structural features of the 'Null Type Mapping' class. + * + * + * @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 IPersistent Attribute}' class. + * + * + * @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 'Mapping Key' attribute. + * + * + * @generated + * @ordered + */ + public static final int IPERSISTENT_ATTRIBUTE__MAPPING_KEY = IJPA_CONTENT_NODE_FEATURE_COUNT + 0; + + /** + * The number of structural features of the 'IPersistent Attribute' class. + * + * + * @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 IAttribute Mapping}' class. + * + * + * @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 'IAttribute Mapping' class. + * + * + * @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 Access Type}' enum. + * + * + * @see org.eclipse.jpt.core.internal.AccessType + * @see org.eclipse.jpt.core.internal.JpaCorePackage#getAccessType() + * @generated + */ + public static final int ACCESS_TYPE = 21; + + /** + * + * + * @generated + */ + private EClass iJpaModelEClass = null; + + /** + * + * + * @generated + */ + private EClass jpaModelEClass = null; + + /** + * + * + * @generated + */ + private EClass iJpaEObjectEClass = null; + + /** + * + * + * @generated + */ + private EClass jpaEObjectEClass = null; + + /** + * + * + * @generated + */ + private EClass xmlEObjectEClass = null; + + /** + * + * + * @generated + */ + private EClass iJpaProjectEClass = null; + + /** + * + * + * @generated + */ + private EClass jpaProjectEClass = null; + + /** + * + * + * @generated + */ + private EClass iJpaPlatformEClass = null; + + /** + * + * + * @generated + */ + private EClass iJpaDataSourceEClass = null; + + /** + * + * + * @generated + */ + private EClass jpaDataSourceEClass = null; + + /** + * + * + * @generated + */ + private EClass iJpaFileEClass = null; + + /** + * + * + * @generated + */ + private EClass jpaFileEClass = null; + + /** + * + * + * @generated + */ + private EClass iJpaSourceObjectEClass = null; + + /** + * + * + * @generated + */ + private EClass iXmlEObjectEClass = null; + + /** + * + * + * @generated + */ + private EClass iJpaContentNodeEClass = null; + + /** + * + * + * @generated + */ + private EClass iJpaRootContentNodeEClass = null; + + /** + * + * + * @generated + */ + private EClass iPersistentTypeEClass = null; + + /** + * + * + * @generated + */ + private EClass iTypeMappingEClass = null; + + /** + * + * + * @generated + */ + private EClass nullTypeMappingEClass = null; + + /** + * + * + * @generated + */ + private EClass iPersistentAttributeEClass = null; + + /** + * + * + * @generated + */ + private EClass iAttributeMappingEClass = null; + + /** + * + * + * @generated + */ + private EEnum accessTypeEEnum = null; + + /** + * Creates an instance of the model Package, registered with + * {@link org.eclipse.emf.ecore.EPackage.Registry EPackage.Registry} by the package + * package URI value. + *

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. + * + * + * @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); + } + + /** + * + * + * @generated + */ + private static boolean isInited = false; + + /** + * Creates, registers, and initializes the Package 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. + *

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. + *

Invocation of this method will not affect any packages that have + * already been initialized. + * + * + * @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 IJpa Model}'. + * + * + * @return the meta object for class 'IJpa Model'. + * @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 Jpa Model}'. + * + * + * @return the meta object for class 'Jpa Model'. + * @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 Projects}'. + * + * + * @return the meta object for the containment reference list 'Projects'. + * @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 IJpa EObject}'. + * + * + * @return the meta object for class 'IJpa EObject'. + * @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 Jpa EObject}'. + * + * + * @return the meta object for class 'Jpa EObject'. + * @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 Xml EObject}'. + * + * + * @return the meta object for class 'Xml EObject'. + * @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 IJpa Project}'. + * + * + * @return the meta object for class 'IJpa Project'. + * @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 Jpa Project}'. + * + * + * @return the meta object for class 'Jpa Project'. + * @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 Platform}'. + * + * + * @return the meta object for the reference 'Platform'. + * @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 Data Source}'. + * + * + * @return the meta object for the containment reference 'Data Source'. + * @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 Files}'. + * + * + * @return the meta object for the containment reference list 'Files'. + * @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 IJpa Platform}'. + * + * + * @return the meta object for class 'IJpa Platform'. + * @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 IJpa Data Source}'. + * + * + * @return the meta object for class 'IJpa Data Source'. + * @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 Jpa Data Source}'. + * + * + * @return the meta object for class 'Jpa Data Source'. + * @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 Connection Profile Name}'. + * + * + * @return the meta object for the attribute 'Connection Profile Name'. + * @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 IJpa File}'. + * + * + * @return the meta object for class 'IJpa File'. + * @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 Jpa File}'. + * + * + * @return the meta object for class 'Jpa File'. + * @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 Content Id}'. + * + * + * @return the meta object for the attribute 'Content Id'. + * @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 Content}'. + * + * + * @return the meta object for the containment reference 'Content'. + * @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 IJpa Source Object}'. + * + * + * @return the meta object for class 'IJpa Source Object'. + * @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 IXml EObject}'. + * + * + * @return the meta object for class 'IXml EObject'. + * @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 IJpa Content Node}'. + * + * + * @return the meta object for class 'IJpa Content Node'. + * @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 IJpa Root Content Node}'. + * + * + * @return the meta object for class 'IJpa Root Content Node'. + * @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 Jpa File}'. + * + * + * @return the meta object for the container reference 'Jpa File'. + * @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 IPersistent Type}'. + * + * + * @return the meta object for class 'IPersistent Type'. + * @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 Mapping Key}'. + * + * + * @return the meta object for the attribute 'Mapping Key'. + * @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 IType Mapping}'. + * + * + * @return the meta object for class 'IType Mapping'. + * @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 Name}'. + * + * + * @return the meta object for the attribute 'Name'. + * @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 Table Name}'. + * + * + * @return the meta object for the attribute 'Table Name'. + * @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 Null Type Mapping}'. + * + * + * @return the meta object for class 'Null Type Mapping'. + * @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 IPersistent Attribute}'. + * + * + * @return the meta object for class 'IPersistent Attribute'. + * @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 Mapping Key}'. + * + * + * @return the meta object for the attribute 'Mapping Key'. + * @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 IAttribute Mapping}'. + * + * + * @return the meta object for class 'IAttribute Mapping'. + * @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 Access Type}'. + * + * + * @return the meta object for enum 'Access Type'. + * @see org.eclipse.jpt.core.internal.AccessType + * @generated + */ + public EEnum getAccessType() { + return accessTypeEEnum; + } + + /** + * Returns the factory that creates the instances of the model. + * + * + * @return the factory that creates the instances of the model. + * @generated + */ + public JpaCoreFactory getJpaCoreFactory() { + return (JpaCoreFactory) getEFactoryInstance(); + } + + /** + * + * + * @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. + * + * + * @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); + } + + /** + * + * + * @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. + * + * + * @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); + } + /** + * + * Defines literals for the meta objects that represent + *

    + *
  • each class,
  • + *
  • each feature of each class,
  • + *
  • each enum,
  • + *
  • and each data type
  • + *
+ * + * @generated + */ + public interface Literals + { + /** + * The meta object literal for the '{@link org.eclipse.jpt.core.internal.IJpaModel IJpa Model}' class. + * + * + * @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 Jpa Model}' class. + * + * + * @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 'Projects' containment reference list feature. + * + * + * @generated + */ + public static final EReference JPA_MODEL__PROJECTS = eINSTANCE.getJpaModel_Projects(); + + /** + * The meta object literal for the '{@link org.eclipse.jpt.core.internal.IJpaEObject IJpa EObject}' class. + * + * + * @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 Jpa EObject}' class. + * + * + * @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 Xml EObject}' class. + * + * + * @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 IJpa Project}' class. + * + * + * @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 Jpa Project}' class. + * + * + * @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 'Platform' reference feature. + * + * + * @generated + */ + public static final EReference JPA_PROJECT__PLATFORM = eINSTANCE.getJpaProject_Platform(); + + /** + * The meta object literal for the 'Data Source' containment reference feature. + * + * + * @generated + */ + public static final EReference JPA_PROJECT__DATA_SOURCE = eINSTANCE.getJpaProject_DataSource(); + + /** + * The meta object literal for the 'Files' containment reference list feature. + * + * + * @generated + */ + public static final EReference JPA_PROJECT__FILES = eINSTANCE.getJpaProject_Files(); + + /** + * The meta object literal for the '{@link org.eclipse.jpt.core.internal.IJpaPlatform IJpa Platform}' class. + * + * + * @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 IJpa Data Source}' class. + * + * + * @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 Jpa Data Source}' class. + * + * + * @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 'Connection Profile Name' attribute feature. + * + * + * @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 IJpa File}' class. + * + * + * @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 Jpa File}' class. + * + * + * @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 'Content Id' attribute feature. + * + * + * @generated + */ + public static final EAttribute JPA_FILE__CONTENT_ID = eINSTANCE.getJpaFile_ContentId(); + + /** + * The meta object literal for the 'Content' containment reference feature. + * + * + * @generated + */ + public static final EReference JPA_FILE__CONTENT = eINSTANCE.getJpaFile_Content(); + + /** + * The meta object literal for the '{@link org.eclipse.jpt.core.internal.IJpaSourceObject IJpa Source Object}' class. + * + * + * @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 IXml EObject}' class. + * + * + * @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 IJpa Content Node}' class. + * + * + * @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 IJpa Root Content Node}' class. + * + * + * @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 'Jpa File' container reference feature. + * + * + * @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 IPersistent Type}' class. + * + * + * @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 'Mapping Key' attribute feature. + * + * + * @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 IType Mapping}' class. + * + * + * @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 'Name' attribute feature. + * + * + * @generated + */ + public static final EAttribute ITYPE_MAPPING__NAME = eINSTANCE.getITypeMapping_Name(); + + /** + * The meta object literal for the 'Table Name' attribute feature. + * + * + * @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 Null Type Mapping}' class. + * + * + * @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 IPersistent Attribute}' class. + * + * + * @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 'Mapping Key' attribute feature. + * + * + * @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 IAttribute Mapping}' class. + * + * + * @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 Access Type}' enum. + * + * + * @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 "org.eclipse.jpt.core"). + */ + public final static String PLUGIN_ID = "org.eclipse.jpt.core"; //$NON-NLS-1$ + + /** + * The identifier for the JPA facet + * (value "jpt.jpa"). + */ + 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 null if unable to associate the given project with an + * IJpaProject. + * + * @param project the given project + * @return the IJpaProject corresponding to the given project, + * or null 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 null if unable to associate the given file with an + * IJpaFile. + * + * @param file the given file + * @return the IJpaFile corresponding to the given file, + * or null 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; + +/** + * + * A representation of the model object 'Jpa Data Source'. + * + * + *

+ * The following features are supported: + *

    + *
  • {@link org.eclipse.jpt.core.internal.JpaDataSource#getConnectionProfileName Connection Profile Name}
  • + *
+ *

+ * + * @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() Connection Profile Name}' attribute. + * + * + * @see #getConnectionProfileName() + * @generated + * @ordered + */ + protected static final String CONNECTION_PROFILE_NAME_EDEFAULT = null; + + /** + * The cached value of the '{@link #getConnectionProfileName() Connection Profile Name}' attribute. + * + * + * @see #getConnectionProfileName() + * @generated + * @ordered + */ + protected String connectionProfileName = CONNECTION_PROFILE_NAME_EDEFAULT; + + /** + * + * + * @generated + */ + protected JpaDataSource() { + super(); + } + + /** + * + * + * @generated + */ + @Override + protected EClass eStaticClass() { + return JpaCorePackage.Literals.JPA_DATA_SOURCE; + } + + /** + * Returns the value of the 'Connection Profile Name' attribute. + * + *

+ * If the meaning of the 'Connection Profile Name' attribute isn't clear, + * there really should be more of a description here... + *

+ * + * @return the value of the 'Connection Profile Name' 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 Connection Profile Name}' attribute. + * + * + * @param value the new value of the 'Connection Profile Name' 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()); + } + + /** + * + * + * @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); + } + + /** + * + * + * @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); + } + + /** + * + * + * @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); + } + + /** + * + * + * @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); + } + + /** + * + * + * @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; + +/** + * + * + * + * + * @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, Set> insignificantFeatureIdSets = new Hashtable, Set>(); + + /** + * + * + * @generated + */ + protected JpaEObject() { + super(); + } + + /** + * + * + * @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 insignificantFeatureIds() { + synchronized (insignificantFeatureIdSets) { + Set insignificantFeatureIds = insignificantFeatureIdSets.get(this.getClass()); + if (insignificantFeatureIds == null) { + insignificantFeatureIds = new HashSet(); + 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 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; + +/** + * + * A representation of the model object 'Persistence File'. + * + * + *

+ * The following features are supported: + *

    + *
  • {@link org.eclipse.jpt.core.internal.JpaFile#getContentId Content Id}
  • + *
  • {@link org.eclipse.jpt.core.internal.JpaFile#getContent Content}
  • + *
+ *

+ * + * @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() Content Id}' attribute. + * + * + * @see #getContentId() + * @generated + * @ordered + */ + protected static final String CONTENT_ID_EDEFAULT = null; + + /** + * The cached value of the '{@link #getContentId() Content Id}' attribute. + * + * + * @see #getContentId() + * @generated + * @ordered + */ + protected String contentId = CONTENT_ID_EDEFAULT; + + /** + * The cached value of the '{@link #getContent() Content}' containment reference. + * + * + * @see #getContent() + * @generated + * @ordered + */ + protected IJpaRootContentNode content; + + /** + * The IFile associated with this JPA file + */ + protected IFile file; + + /** + * + * + * @generated + */ + protected JpaFile() { + super(); + } + + /** + * + * + * @generated + */ + @Override + protected EClass eStaticClass() { + return JpaCorePackage.Literals.JPA_FILE; + } + + /** + * Returns the value of the 'Content Id' attribute. + * + *

+ * If the meaning of the 'Content Id' attribute isn't clear, + * there really should be more of a description here... + *

+ * + * @return the value of the 'Content Id' 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 Content Id}' attribute. + * + * + * @param value the new value of the 'Content Id' 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 'Content' containment reference. + * It is bidirectional and its opposite is '{@link org.eclipse.jpt.core.internal.IJpaRootContentNode#getJpaFile Jpa File}'. + * + *

+ * If the meaning of the 'Content' containment reference isn't clear, + * there really should be more of a description here... + *

+ * + * @return the value of the 'Content' 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; + } + + /** + * + * + * @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 Content}' containment reference. + * + * + * @param value the new value of the 'Content' 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); + } + + /** + * + * + * @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); + } + + /** + * + * + * @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); + } + + /** + * + * + * @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); + } + + /** + * + * + * @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); + } + + /** + * + * + * @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); + } + + /** + * + * + * @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); + } + + /** + * + * + * @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; + +/** + * + * A representation of the model object 'Jpa Model'. + * + * + *

+ * The following features are supported: + *

    + *
  • {@link org.eclipse.jpt.core.internal.JpaModel#getProjects Projects}
  • + *
+ *

+ * + * @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() Projects}' containment reference list. + * + * + * @see #getProjects() + * @generated + * @ordered + */ + protected EList projects; + + /** + * Flag to indicate whether the model has been filled with projects + */ + private boolean filled = false; + + /** + * + * + * @generated + */ + protected JpaModel() { + super(); + } + + /** + * + * + * @generated + */ + @Override + protected EClass eStaticClass() { + return JpaCorePackage.Literals.JPA_MODEL; + } + + /** + * Returns the value of the 'Projects' containment reference list. + * The list contents are of type {@link org.eclipse.jpt.core.internal.IJpaProject}. + * + *

+ * If the meaning of the 'Projects' containment reference list isn't clear, + * there really should be more of a description here... + *

+ * + * @return the value of the 'Projects' 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 getProjects() { + if (projects == null) { + projects = new EObjectContainmentEList(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 jpaProjects() { + return new ReadOnlyIterator(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 stream = new CloneIterator(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 stream = getProjects().iterator(); stream.hasNext();) { + ((JpaProject) stream.next()).handleEvent(event); + } + } + + /** + * + * + * @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); + } + + /** + * + * + * @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); + } + + /** + * + * + * @generated + */ + @SuppressWarnings("unchecked") + @Override + public void eSet(int featureID, Object newValue) { + switch (featureID) { + case JpaCorePackage.JPA_MODEL__PROJECTS : + getProjects().clear(); + getProjects().addAll((Collection) newValue); + return; + } + super.eSet(featureID, newValue); + } + + /** + * + * + * @generated + */ + @Override + public void eUnset(int featureID) { + switch (featureID) { + case JpaCorePackage.JPA_MODEL__PROJECTS : + getProjects().clear(); + return; + } + super.eUnset(featureID); + } + + /** + * + * + * @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 null 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 null 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 null 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 resourceChangeProcessors = new ThreadLocal(); + + 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 elementChangeProcessors = new ThreadLocal(); + + 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 jpaPlatforms; + + + /* (non Java doc) + * restrict access + */ + private JpaPlatformRegistry() { + buildJpaPlatforms(); + } + + + private void buildJpaPlatforms() { + this.jpaPlatforms = new HashMap(); + + for (Iterator 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 allConfigElements() { + IExtensionRegistry registry = Platform.getExtensionRegistry(); + IExtensionPoint extensionPoint = + registry.getExtensionPoint(JpaCorePlugin.PLUGIN_ID, EXTENSION_ID); + IExtension[] extensions = extensionPoint.getExtensions(); + + return new CompositeIterator( + new TransformationIterator>(CollectionTools.iterator(extensions)) { + @Override + protected Iterator 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; + +/** + * + * A representation of the model object 'Jpa Project'. + * + * + *

+ * The following features are supported: + *

    + *
  • {@link org.eclipse.jpt.core.internal.JpaProject#getPlatform Platform}
  • + *
  • {@link org.eclipse.jpt.core.internal.JpaProject#getDataSource Data Source}
  • + *
  • {@link org.eclipse.jpt.core.internal.JpaProject#getFiles Files}
  • + *
+ *

+ * + * @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() Data Source}' containment reference. + * + * + * @see #getDataSource() + * @generated + * @ordered + */ + protected IJpaDataSource dataSource; + + /** + * The cached value of the '{@link #getFiles() Files}' containment reference list. + * + * + * @see #getFiles() + * @generated + * @ordered + */ + protected EList 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; + + /** + * + * + * @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(); + } + } + } + }; + } + + /** + * + * + * @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 'Platform' reference. + * + *

+ * If the meaning of the 'Platform' reference isn't clear, + * there really should be more of a description here... + *

+ * + * @return the value of the 'Platform' 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 Platform}' reference. + * + * + * @param value the new value of the 'Platform' 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 'Data Source' containment reference. + * + *

+ * If the meaning of the 'Data Source' containment reference isn't clear, + * there really should be more of a description here... + *

+ * + * @return the value of the 'Data Source' 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(); + } + + /** + * + * + * @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 Data Source}' containment reference. + * + * + * @param value the new value of the 'Data Source' 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 'Files' containment reference list. + * The list contents are of type {@link org.eclipse.jpt.core.internal.IJpaFile}. + * + *

+ * If the meaning of the 'Files' containment reference list isn't clear, + * there really should be more of a description here... + *

+ * + * @return the value of the 'Files' 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 getFiles() { + if (files == null) { + files = new EObjectContainmentEList(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 jpaFiles() { + return new ReadOnlyIterator(getFiles().iterator()); + } + + public Collection jpaFiles(String contentType) { + Collection jpaFiles = new ArrayList(); + for (Iterator 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 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 stream = new CloneIterator(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 stream = jpaFiles(); stream.hasNext();) { + ((JpaFile) stream.next()).handleEvent(event); + } + resynch(); + } + } + + public Iterator validationMessages() { + List messages = new ArrayList(); + 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; + } + } + + /** + * + * + * @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); + } + + /** + * + * + * @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); + } + + /** + * + * + * @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) newValue); + return; + } + super.eSet(featureID, newValue); + } + + /** + * + * + * @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); + } + + /** + * + * + * @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; + +/** + * + * A representation of the model object 'Null Type Mapping'. + * + * + * + * @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() Name}' attribute. + * + * + * @see #getName() + * @generated + * @ordered + */ + protected static final String NAME_EDEFAULT = null; + + /** + * The default value of the '{@link #getTableName() Table Name}' attribute. + * + * + * @see #getTableName() + * @generated + * @ordered + */ + protected static final String TABLE_NAME_EDEFAULT = null; + + /** + * + * + * @generated + */ + protected NullTypeMapping() { + super(); + } + + /** + * + * + * @generated + */ + @Override + protected EClass eStaticClass() { + return JpaCorePackage.Literals.NULL_TYPE_MAPPING; + } + + /** + * Returns the value of the 'Name' attribute. + * + *

+ * If the meaning of the 'Name' attribute isn't clear, + * there really should be more of a description here... + *

+ * + * @return the value of the 'Name' 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 'Table Name' attribute. + * + *

+ * If the meaning of the 'Table Name' attribute isn't clear, + * there really should be more of a description here... + *

+ * + * @return the value of the 'Table Name' 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()"); + } + + /** + * + * + * @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); + } + + /** + * + * + * @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); + } + + /** + * + * + * @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); + } + + /** + * + * + * @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 overridableAssociationNames() { + return EmptyIterator.instance(); + } + + public Iterator 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; + +/** + * + * A representation of the model object 'Xml EObject'. + * + * + * + * @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> insignificantXmlFeatureIdSets = new Hashtable>(); + + /** + * + * + * @generated + */ + protected XmlEObject() { + super(); + } + + /** + * + * + * @generated + */ + @Override + protected EClass eStaticClass() { + return JpaCorePackage.Literals.XML_EOBJECT; + } + + /** + * + * + * @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 insignificantXmlFeatureIds() { + synchronized (insignificantXmlFeatureIdSets) { + Set insignificantXmlFeatureIds = insignificantXmlFeatureIdSets.get(this.getClass()); + if (insignificantXmlFeatureIds == null) { + insignificantXmlFeatureIds = new HashSet(); + 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 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; + +/** + * + * A representation of the model object 'IJava Attribute Mapping'. + * + * + * + * @see org.eclipse.jpt.core.internal.content.java.JpaJavaPackage#getIJavaAttributeMapping() + * @model kind="class" interface="true" abstract="true" + * @generated + */ +public interface IJavaAttributeMapping extends IAttributeMapping +{ + /** + * + * 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. + * + * @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; + +/** + * + * A representation of the model object 'IJava Type Mapping'. + * + * + * + * @see org.eclipse.jpt.core.internal.content.java.JpaJavaPackage#getIJavaTypeMapping() + * @model kind="class" interface="true" abstract="true" + * @generated + */ +public interface IJavaTypeMapping extends ITypeMapping +{ + /** + * + * + * @model + * @generated + */ + void initialize(); + + void updateFromJava(CompilationUnit astRoot); + + List 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; + +/** + * + * A representation of the model object 'Java EObject'. + * + * + * + * @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 + } + + /** + * + * + * @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; + +/** + * + * A representation of the model object 'Java Persistent Attribute'. + * + * + *

+ * The following features are supported: + *

    + *
  • {@link org.eclipse.jpt.core.internal.content.java.JavaPersistentAttribute#getDefaultMapping Default Mapping}
  • + *
  • {@link org.eclipse.jpt.core.internal.content.java.JavaPersistentAttribute#getSpecifiedMapping Specified Mapping}
  • + *
+ *

+ * + * @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() Mapping Key}' attribute. + * + * + * @see #getMappingKey() + * @generated + * @ordered + */ + protected static final String MAPPING_KEY_EDEFAULT = null; + + /** + * The cached value of the '{@link #getMappingKey() Mapping Key}' attribute. + * + * + * @see #getMappingKey() + * @generated + * @ordered + */ + protected String mappingKey = MAPPING_KEY_EDEFAULT; + + /** + * The cached value of the '{@link #getDefaultMapping() Default Mapping}' containment reference. + * + * + * @see #getDefaultMapping() + * @generated + * @ordered + */ + protected IJavaAttributeMapping defaultMapping; + + /** + * The cached value of the '{@link #getSpecifiedMapping() Specified Mapping}' containment reference. + * + * + * @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; + + /** + * + * + * @generated + */ + protected JavaPersistentAttribute() { + super(); + } + + protected JavaPersistentAttribute(Attribute attribute) { + super(); + this.attribute = attribute; + this.attributeMappingProviders = this.buildAttributeMappingProviders(); + this.nullAttributeMappingProvider = this.buildNullAttributeMappingProvider(); + } + + private IJavaAttributeMappingProvider[] buildAttributeMappingProviders() { + ArrayList providers = new ArrayList(); + 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 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(); + } + + /** + * + * + * @generated + */ + @Override + protected EClass eStaticClass() { + return JpaJavaPackage.Literals.JAVA_PERSISTENT_ATTRIBUTE; + } + + /** + * Returns the value of the 'Mapping Key' attribute. + * + *

+ * If the meaning of the 'Mapping Key' attribute isn't clear, + * there really should be more of a description here... + *

+ * + * @return the value of the 'Mapping Key' 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 'Default Mapping' containment reference. + * + *

+ * If the meaning of the 'Default Mapping' containment reference isn't clear, + * there really should be more of a description here... + *

+ * + * @return the value of the 'Default Mapping' 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; + } + + /** + * + * + * @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 Default Mapping}' containment reference. + * + * + * @param value the new value of the 'Default Mapping' 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 'Specified Mapping' containment reference. + * + *

+ * If the meaning of the 'Specified Mapping' containment reference isn't clear, + * there really should be more of a description here... + *

+ * + * @return the value of the 'Specified Mapping' 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; + } + + /** + * + * + * @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 Specified Mapping}' containment reference. + * + * + * @param value the new value of the 'Specified Mapping' 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(); + } + + /** + * + * + * @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); + } + + /** + * + * + * @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); + } + + /** + * + * + * @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); + } + + /** + * + * + * @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); + } + + /** + * + * + * @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); + } + + /** + * + * + * @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); + } + + /** + * + * + * @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); + } + + /** + * + * + * @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 candidateMappingKeys() { + return new TransformationIterator(new ArrayIterator(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 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; + +/** + * + * A representation of the model object 'Java Type'. + * + * + *

+ * The following features are supported: + *

    + *
  • {@link org.eclipse.jpt.core.internal.content.java.JavaPersistentType#getMapping Mapping}
  • + *
  • {@link org.eclipse.jpt.core.internal.content.java.JavaPersistentType#getAttributes Attributes}
  • + *
  • {@link org.eclipse.jpt.core.internal.content.java.JavaPersistentType#getAccess Access}
  • + *
+ *

+ * + * @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() Mapping Key}' attribute. + * + * + * @see #getMappingKey() + * @generated + * @ordered + */ + protected static final String MAPPING_KEY_EDEFAULT = null; + + /** + * The cached value of the '{@link #getMappingKey() Mapping Key}' attribute. + * + * + * @see #getMappingKey() + * @generated + * @ordered + */ + protected String mappingKey = MAPPING_KEY_EDEFAULT; + + /** + * The cached value of the '{@link #getMapping() Mapping}' containment reference. + * + * + * @see #getMapping() + * @generated + * @ordered + */ + protected IJavaTypeMapping mapping; + + /** + * The cached value of the '{@link #getAttributes() Attributes}' containment reference list. + * + * + * @see #getAttributes() + * @generated + * @ordered + */ + protected EList attributes; + + /** + * The default value of the '{@link #getAccess() Access}' attribute. + * + * + * @see #getAccess() + * @generated + * @ordered + */ + protected static final AccessType ACCESS_EDEFAULT = AccessType.DEFAULT; + + /** + * The cached value of the '{@link #getAccess() Access}' attribute. + * + * + * @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 providers = new ArrayList(); + 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 providers) { + providers.add(JavaNullTypeMappingProvider.instance()); + providers.add(JavaEntityProvider.instance()); + providers.add(JavaMappedSuperclassProvider.instance()); + providers.add(JavaEmbeddableProvider.instance()); + } + + private DeclarationAnnotationAdapter[] buildAttributeMappingAnnotationAdapters() { + ArrayList adapters = new ArrayList(); + 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 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); + } + + /** + * + * + * @generated + */ + @Override + protected EClass eStaticClass() { + return JpaJavaPackage.Literals.JAVA_PERSISTENT_TYPE; + } + + /** + * Returns the value of the 'Mapping Key' attribute. + * + *

+ * If the meaning of the 'Mapping Key' attribute isn't clear, + * there really should be more of a description here... + *

+ * + * @return the value of the 'Mapping Key' 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 Mapping Key}' attribute. + * + * + * @param value the new value of the 'Mapping Key' 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 'Mapping' containment reference. + * The default value is "". + * + *

+ * If the meaning of the 'Mapping' containment reference isn't clear, + * there really should be more of a description here... + *

+ * + * @return the value of the 'Mapping' 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; + } + + /** + * + * + * @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 Mapping}' containment reference. + * + * + * @param value the new value of the 'Mapping' 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 'Attributes' containment reference list. + * The list contents are of type {@link org.eclipse.jpt.core.internal.content.java.JavaPersistentAttribute}. + * + *

+ * If the meaning of the 'Attributes' containment reference list isn't clear, + * there really should be more of a description here... + *

+ * + * @return the value of the 'Attributes' 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 getAttributes() { + if (attributes == null) { + attributes = new EObjectContainmentEList(JavaPersistentAttribute.class, this, JpaJavaPackage.JAVA_PERSISTENT_TYPE__ATTRIBUTES); + } + return attributes; + } + + /** + * Returns the value of the 'Access' attribute. + * The default value is "". + * The literals are from the enumeration {@link org.eclipse.jpt.core.internal.AccessType}. + * + *

+ * If the meaning of the 'Access' attribute isn't clear, + * there really should be more of a description here... + *

+ * + * @return the value of the 'Access' 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; + } + + /** + * + * + * @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); + } + + /** + * + * + * @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); + } + + /** + * + * + * @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) newValue); + return; + } + super.eSet(featureID, newValue); + } + + /** + * + * + * @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); + } + + /** + * + * + * @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); + } + + /** + * + * + * @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); + } + + /** + * + * + * @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); + } + + /** + * + * + * @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 persistentAttributesToRemove = new ArrayList(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 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 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 candidateMappingKeys() { + return new TransformationIterator(new ArrayIterator(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 candidateValuesFor(int pos, CompilationUnit astRoot) { + List 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 attributes() { + return new ReadOnlyIterator(getAttributes()); + } + + public Iterator allAttributes() { + return new CompositeIterator(new TransformationIterator>(this.inheritanceHierarchy()) { + @Override + protected Iterator transform(IPersistentType pt) { + return pt.attributes(); + } + }); + } + + public Iterator inheritanceHierarchy() { + // using a chain iterator to traverse up the inheritance tree + return new ChainIterator(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; + +/** + * + * A representation of the model object 'Java File Content'. + * + * + *

+ * The following features are supported: + *

    + *
  • {@link org.eclipse.jpt.core.internal.content.java.JpaCompilationUnit#getTypes Types}
  • + *
+ *

+ * + * @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() Types}' containment reference list. + * + * + * @see #getTypes() + * @generated + * @ordered + */ + protected EList types; + + private ICompilationUnit compilationUnit; + + protected JpaCompilationUnit() { + super(); + } + + /** + * + * + * @generated + */ + @Override + protected EClass eStaticClass() { + return JpaJavaPackage.Literals.JPA_COMPILATION_UNIT; + } + + /** + * Returns the value of the 'Jpa File' container reference. + * The default value is "". + * It is bidirectional and its opposite is '{@link org.eclipse.jpt.core.internal.JpaFile#getContent Content}'. + * + *

+ * If the meaning of the 'Jpa File' container reference isn't clear, + * there really should be more of a description here... + *

+ * + * @return the value of the 'Jpa File' 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 'Types' containment reference list. + * The list contents are of type {@link org.eclipse.jpt.core.internal.content.java.JavaPersistentType}. + * + *

+ * If the meaning of the 'Types' containment reference list isn't clear, + * there really should be more of a description here... + *

+ * + * @return the value of the 'Types' 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 getTypes() { + if (types == null) { + types = new EObjectContainmentEList(JavaPersistentType.class, this, JpaJavaPackage.JPA_COMPILATION_UNIT__TYPES); + } + return types; + } + + /** + * + * + * @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); + } + + /** + * + * + * @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); + } + + /** + * + * + * @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); + } + + /** + * + * + * @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); + } + + /** + * + * + * @generated + */ + @SuppressWarnings("unchecked") + @Override + public void eSet(int featureID, Object newValue) { + switch (featureID) { + case JpaJavaPackage.JPA_COMPILATION_UNIT__TYPES : + getTypes().clear(); + getTypes().addAll((Collection) newValue); + return; + } + super.eSet(featureID, newValue); + } + + /** + * + * + * @generated + */ + @Override + public void eUnset(int featureID) { + switch (featureID) { + case JpaJavaPackage.JPA_COMPILATION_UNIT__TYPES : + getTypes().clear(); + return; + } + super.eUnset(featureID); + } + + /** + * + * + * @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); + } + + /** + * + * + * @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); + } + + /** + * + * + * @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 persistentTypesToRemove = new ArrayList(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 candidateValuesFor(int pos) { + CompilationUnit astRoot = this.astRoot(); + for (JavaPersistentType persistentType : this.getTypes()) { + List 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; + +/** + * + * The Factory for the model. + * It provides a create method for each non-abstract class of the model. + * + * @see org.eclipse.jpt.core.internal.content.java.JpaJavaPackage + * @generated + */ +public class JpaJavaFactory extends EFactoryImpl +{ + /** + * The singleton instance of the factory. + * + * + * @generated + */ + public static final JpaJavaFactory eINSTANCE = init(); + + /** + * Creates the default factory implementation. + * + * + * @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. + * + * + * @generated + */ + public JpaJavaFactory() { + super(); + } + + /** + * + * + * @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"); + } + } + + /** + * + * + * @generated + */ + public JpaCompilationUnit createJpaCompilationUnit() { + JpaCompilationUnit jpaCompilationUnit = new JpaCompilationUnit(); + return jpaCompilationUnit; + } + + /** + * + * + * @generated + */ + public JavaPersistentType createJavaPersistentType() { + JavaPersistentType javaPersistentType = new JavaPersistentType(); + return javaPersistentType; + } + + /** + * + * + * @generated + */ + public JavaPersistentAttribute createJavaPersistentAttribute() { + JavaPersistentAttribute javaPersistentAttribute = new JavaPersistentAttribute(); + return javaPersistentAttribute; + } + + public JavaPersistentAttribute createJavaPersistentAttribute(Attribute attribute) { + JavaPersistentAttribute javaPersistentAttribute = new JavaPersistentAttribute(attribute); + return javaPersistentAttribute; + } + + /** + * + * + * @generated + */ + public JpaJavaPackage getJpaJavaPackage() { + return (JpaJavaPackage) getEPackage(); + } + + /** + * + * + * @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; + +/** + * + * The Package for the model. + * It contains accessors for the meta objects to represent + *
    + *
  • each class,
  • + *
  • each feature of each class,
  • + *
  • each enum,
  • + *
  • and each data type
  • + *
+ * + * @see org.eclipse.jpt.core.internal.content.java.JpaJavaFactory + * @model kind="package" + * @generated + */ +public class JpaJavaPackage extends EPackageImpl +{ + /** + * The package name. + * + * + * @generated + */ + public static final String eNAME = "java"; + + /** + * The package namespace URI. + * + * + * @generated + */ + public static final String eNS_URI = "jpt.java.xmi"; + + /** + * The package namespace name. + * + * + * @generated + */ + public static final String eNS_PREFIX = "org.eclipse.jpt.core.content.java"; + + /** + * The singleton instance of the package. + * + * + * @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 IJava Attribute Mapping}' class. + * + * + * @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 IJava Type Mapping}' class. + * + * + * @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 Java EObject}' class. + * + * + * @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 'Java EObject' class. + * + * + * @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 Jpa Compilation Unit}' class. + * + * + * @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 'Jpa File' container reference. + * + * + * @generated + * @ordered + */ + public static final int JPA_COMPILATION_UNIT__JPA_FILE = JAVA_EOBJECT_FEATURE_COUNT + 0; + + /** + * The feature id for the 'Types' containment reference list. + * + * + * @generated + * @ordered + */ + public static final int JPA_COMPILATION_UNIT__TYPES = JAVA_EOBJECT_FEATURE_COUNT + 1; + + /** + * The number of structural features of the 'Jpa Compilation Unit' class. + * + * + * @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 Java Persistent Type}' class. + * + * + * @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 'Mapping Key' attribute. + * + * + * @generated + * @ordered + */ + public static final int JAVA_PERSISTENT_TYPE__MAPPING_KEY = JAVA_EOBJECT_FEATURE_COUNT + 0; + + /** + * The feature id for the 'Mapping' containment reference. + * + * + * @generated + * @ordered + */ + public static final int JAVA_PERSISTENT_TYPE__MAPPING = JAVA_EOBJECT_FEATURE_COUNT + 1; + + /** + * The feature id for the 'Attributes' containment reference list. + * + * + * @generated + * @ordered + */ + public static final int JAVA_PERSISTENT_TYPE__ATTRIBUTES = JAVA_EOBJECT_FEATURE_COUNT + 2; + + /** + * The feature id for the 'Access' attribute. + * + * + * @generated + * @ordered + */ + public static final int JAVA_PERSISTENT_TYPE__ACCESS = JAVA_EOBJECT_FEATURE_COUNT + 3; + + /** + * The number of structural features of the 'Java Persistent Type' class. + * + * + * @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 Java Persistent Attribute}' class. + * + * + * @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 'Mapping Key' attribute. + * + * + * @generated + * @ordered + */ + public static final int JAVA_PERSISTENT_ATTRIBUTE__MAPPING_KEY = JAVA_EOBJECT_FEATURE_COUNT + 0; + + /** + * The feature id for the 'Default Mapping' containment reference. + * + * + * @generated + * @ordered + */ + public static final int JAVA_PERSISTENT_ATTRIBUTE__DEFAULT_MAPPING = JAVA_EOBJECT_FEATURE_COUNT + 1; + + /** + * The feature id for the 'Specified Mapping' containment reference. + * + * + * @generated + * @ordered + */ + public static final int JAVA_PERSISTENT_ATTRIBUTE__SPECIFIED_MAPPING = JAVA_EOBJECT_FEATURE_COUNT + 2; + + /** + * The number of structural features of the 'Java Persistent Attribute' class. + * + * + * @generated + * @ordered + */ + public static final int JAVA_PERSISTENT_ATTRIBUTE_FEATURE_COUNT = JAVA_EOBJECT_FEATURE_COUNT + 3; + + /** + * The feature id for the 'Name' attribute. + * + * + * @generated + * @ordered + */ + public static final int IJAVA_TYPE_MAPPING__NAME = JpaCorePackage.ITYPE_MAPPING__NAME; + + /** + * The feature id for the 'Table Name' attribute. + * + * + * @generated + * @ordered + */ + public static final int IJAVA_TYPE_MAPPING__TABLE_NAME = JpaCorePackage.ITYPE_MAPPING__TABLE_NAME; + + /** + * The number of structural features of the 'IJava Type Mapping' class. + * + * + * @generated + * @ordered + */ + public static final int IJAVA_TYPE_MAPPING_FEATURE_COUNT = JpaCorePackage.ITYPE_MAPPING_FEATURE_COUNT + 0; + + /** + * The number of structural features of the 'IJava Attribute Mapping' class. + * + * + * @generated + * @ordered + */ + public static final int IJAVA_ATTRIBUTE_MAPPING_FEATURE_COUNT = JpaCorePackage.IATTRIBUTE_MAPPING_FEATURE_COUNT + 0; + + /** + * + * + * @generated + */ + private EClass iJavaAttributeMappingEClass = null; + + /** + * + * + * @generated + */ + private EClass iJavaTypeMappingEClass = null; + + /** + * + * + * @generated + */ + private EClass javaEObjectEClass = null; + + /** + * + * + * @generated + */ + private EClass jpaCompilationUnitEClass = null; + + /** + * + * + * @generated + */ + private EClass javaPersistentTypeEClass = null; + + /** + * + * + * @generated + */ + private EClass javaPersistentAttributeEClass = null; + + /** + * Creates an instance of the model Package, registered with + * {@link org.eclipse.emf.ecore.EPackage.Registry EPackage.Registry} by the package + * package URI value. + *

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. + * + * + * @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); + } + + /** + * + * + * @generated + */ + private static boolean isInited = false; + + /** + * Creates, registers, and initializes the Package 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. + *

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. + *

Invocation of this method will not affect any packages that have + * already been initialized. + * + * + * @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 IJava Attribute Mapping}'. + * + * + * @return the meta object for class 'IJava Attribute Mapping'. + * @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 IJava Type Mapping}'. + * + * + * @return the meta object for class 'IJava Type Mapping'. + * @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 Java EObject}'. + * + * + * @return the meta object for class 'Java EObject'. + * @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 Jpa Compilation Unit}'. + * + * + * @return the meta object for class 'Jpa Compilation Unit'. + * @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 Types}'. + * + * + * @return the meta object for the containment reference list 'Types'. + * @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 Java Persistent Type}'. + * + * + * @return the meta object for class 'Java Persistent Type'. + * @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 Mapping}'. + * + * + * @return the meta object for the containment reference 'Mapping'. + * @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 Attributes}'. + * + * + * @return the meta object for the containment reference list 'Attributes'. + * @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 Access}'. + * + * + * @return the meta object for the attribute 'Access'. + * @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 Java Persistent Attribute}'. + * + * + * @return the meta object for class 'Java Persistent Attribute'. + * @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 Default Mapping}'. + * + * + * @return the meta object for the containment reference 'Default Mapping'. + * @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 Specified Mapping}'. + * + * + * @return the meta object for the containment reference 'Specified Mapping'. + * @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. + * + * + * @return the factory that creates the instances of the model. + * @generated + */ + public JpaJavaFactory getJpaJavaFactory() { + return (JpaJavaFactory) getEFactoryInstance(); + } + + /** + * + * + * @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. + * + * + * @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); + } + + /** + * + * + * @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. + * + * + * @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); + } + /** + * + * Defines literals for the meta objects that represent + *

    + *
  • each class,
  • + *
  • each feature of each class,
  • + *
  • each enum,
  • + *
  • and each data type
  • + *
+ * + * @generated + */ + public interface Literals + { + /** + * The meta object literal for the '{@link org.eclipse.jpt.core.internal.content.java.IJavaAttributeMapping IJava Attribute Mapping}' class. + * + * + * @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 IJava Type Mapping}' class. + * + * + * @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 Java EObject}' class. + * + * + * @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 Jpa Compilation Unit}' class. + * + * + * @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 'Types' containment reference list feature. + * + * + * @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 Java Persistent Type}' class. + * + * + * @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 'Mapping' containment reference feature. + * + * + * @generated + */ + public static final EReference JAVA_PERSISTENT_TYPE__MAPPING = eINSTANCE.getJavaPersistentType_Mapping(); + + /** + * The meta object literal for the 'Attributes' containment reference list feature. + * + * + * @generated + */ + public static final EReference JAVA_PERSISTENT_TYPE__ATTRIBUTES = eINSTANCE.getJavaPersistentType_Attributes(); + + /** + * The meta object literal for the 'Access' attribute feature. + * + * + * @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 Java Persistent Attribute}' class. + * + * + * @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 'Default Mapping' containment reference feature. + * + * + * @generated + */ + public static final EReference JAVA_PERSISTENT_ATTRIBUTE__DEFAULT_MAPPING = eINSTANCE.getJavaPersistentAttribute_DefaultMapping(); + + /** + * The meta object literal for the 'Specified Mapping' containment reference feature. + * + * + * @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; + +/** + * + * A representation of the model object 'Abstract Java Column'. + * + * + * + * @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() Unique}' attribute. + * + * + * @see #getUnique() + * @generated + * @ordered + */ + protected static final DefaultFalseBoolean UNIQUE_EDEFAULT = DefaultFalseBoolean.DEFAULT; + + /** + * The cached value of the '{@link #getUnique() Unique}' attribute. + * + * + * @see #getUnique() + * @generated + * @ordered + */ + protected DefaultFalseBoolean unique = UNIQUE_EDEFAULT; + + /** + * The default value of the '{@link #getNullable() Nullable}' attribute. + * + * + * @see #getNullable() + * @generated + * @ordered + */ + protected static final DefaultTrueBoolean NULLABLE_EDEFAULT = DefaultTrueBoolean.DEFAULT; + + /** + * The cached value of the '{@link #getNullable() Nullable}' attribute. + * + * + * @see #getNullable() + * @generated + * @ordered + */ + protected DefaultTrueBoolean nullable = NULLABLE_EDEFAULT; + + /** + * The default value of the '{@link #getInsertable() Insertable}' attribute. + * + * + * @see #getInsertable() + * @generated + * @ordered + */ + protected static final DefaultTrueBoolean INSERTABLE_EDEFAULT = DefaultTrueBoolean.DEFAULT; + + /** + * The cached value of the '{@link #getInsertable() Insertable}' attribute. + * + * + * @see #getInsertable() + * @generated + * @ordered + */ + protected DefaultTrueBoolean insertable = INSERTABLE_EDEFAULT; + + /** + * The default value of the '{@link #getUpdatable() Updatable}' attribute. + * + * + * @see #getUpdatable() + * @generated + * @ordered + */ + protected static final DefaultTrueBoolean UPDATABLE_EDEFAULT = DefaultTrueBoolean.DEFAULT; + + /** + * The cached value of the '{@link #getUpdatable() Updatable}' attribute. + * + * + * @see #getUpdatable() + * @generated + * @ordered + */ + protected DefaultTrueBoolean updatable = UPDATABLE_EDEFAULT; + + /** + * The default value of the '{@link #getTable() Table}' attribute. + * + * + * @see #getTable() + * @generated + * @ordered + */ + protected static final String TABLE_EDEFAULT = null; + + /** + * The default value of the '{@link #getSpecifiedTable() Specified Table}' attribute. + * + * + * @see #getSpecifiedTable() + * @generated + * @ordered + */ + protected static final String SPECIFIED_TABLE_EDEFAULT = null; + + /** + * The cached value of the '{@link #getSpecifiedTable() Specified Table}' attribute. + * + * + * @see #getSpecifiedTable() + * @generated + * @ordered + */ + protected String specifiedTable = SPECIFIED_TABLE_EDEFAULT; + + /** + * The default value of the '{@link #getDefaultTable() Default Table}' attribute. + * + * + * @see #getDefaultTable() + * @generated + * @ordered + */ + protected static final String DEFAULT_TABLE_EDEFAULT = null; + + /** + * The cached value of the '{@link #getDefaultTable() Default Table}' attribute. + * + * + * @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; + } + } + + /** + * + * + * @generated + */ + @Override + protected EClass eStaticClass() { + return JpaJavaMappingsPackage.Literals.ABSTRACT_JAVA_COLUMN; + } + + /** + * Returns the value of the 'Unique' attribute. + * The literals are from the enumeration {@link org.eclipse.jpt.core.internal.mappings.DefaultFalseBoolean}. + * + *

+ * If the meaning of the 'Unique' attribute isn't clear, + * there really should be more of a description here... + *

+ * + * @return the value of the 'Unique' 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 Unique}' attribute. + * + * + * @param value the new value of the 'Unique' 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 'Nullable' attribute. + * The literals are from the enumeration {@link org.eclipse.jpt.core.internal.mappings.DefaultTrueBoolean}. + * + *

+ * If the meaning of the 'Nullable' attribute isn't clear, + * there really should be more of a description here... + *

+ * + * @return the value of the 'Nullable' 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 Nullable}' attribute. + * + * + * @param value the new value of the 'Nullable' 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 'Insertable' attribute. + * The literals are from the enumeration {@link org.eclipse.jpt.core.internal.mappings.DefaultTrueBoolean}. + * + *

+ * If the meaning of the 'Insertable' attribute isn't clear, + * there really should be more of a description here... + *

+ * + * @return the value of the 'Insertable' 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 Insertable}' attribute. + * + * + * @param value the new value of the 'Insertable' 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 'Updatable' attribute. + * The literals are from the enumeration {@link org.eclipse.jpt.core.internal.mappings.DefaultTrueBoolean}. + * + *

+ * If the meaning of the 'Updatable' attribute isn't clear, + * there really should be more of a description here... + *

+ * + * @return the value of the 'Updatable' 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 Updatable}' attribute. + * + * + * @param value the new value of the 'Updatable' 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 'Specified Table' attribute. + * + *

+ * If the meaning of the 'Specified Table' attribute isn't clear, + * there really should be more of a description here... + *

+ * + * @return the value of the 'Specified Table' 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 Specified Table}' attribute. + * + * + * @param value the new value of the 'Specified Table' 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 'Default Table' attribute. + * + *

+ * If the meaning of the 'Default Table' attribute isn't clear, + * there really should be more of a description here... + *

+ * + * @return the value of the 'Default Table' attribute. + * @see org.eclipse.jpt.core.internal.content.java.mappings.JpaJavaMappingsPackage#getIAbstractColumn_DefaultTable() + * @model changeable="false" + * @generated + */ + public String getDefaultTable() { + return defaultTable; + } + + /** + * + * + * @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); + } + + /** + * + * + * @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); + } + + /** + * + * + * @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); + } + + /** + * + * + * @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); + } + + /** + * + * + * @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); + } + + /** + * + * + * @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); + } + + /** + * + * + * @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; + +/** + * + * A representation of the model object 'Abstract Java Table'. + * + * + * + * @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() Name}' attribute. + * + * + * @see #getName() + * @generated + * @ordered + */ + protected static final String NAME_EDEFAULT = null; + + /** + * The default value of the '{@link #getSpecifiedName() Specified Name}' attribute. + * + * + * @see #getSpecifiedName() + * @generated + * @ordered + */ + protected static final String SPECIFIED_NAME_EDEFAULT = null; + + /** + * The cached value of the '{@link #getSpecifiedName() Specified Name}' attribute. + * + * + * @see #getSpecifiedName() + * @generated + * @ordered + */ + protected String specifiedName = SPECIFIED_NAME_EDEFAULT; + + /** + * The default value of the '{@link #getDefaultName() Default Name}' attribute. + * + * + * @see #getDefaultName() + * @generated + * @ordered + */ + protected static final String DEFAULT_NAME_EDEFAULT = null; + + /** + * The cached value of the '{@link #getDefaultName() Default Name}' attribute. + * + * + * @see #getDefaultName() + * @generated + * @ordered + */ + protected String defaultName = DEFAULT_NAME_EDEFAULT; + + /** + * The default value of the '{@link #getCatalog() Catalog}' attribute. + * + * + * @see #getCatalog() + * @generated + * @ordered + */ + protected static final String CATALOG_EDEFAULT = null; + + /** + * The default value of the '{@link #getSpecifiedCatalog() Specified Catalog}' attribute. + * + * + * @see #getSpecifiedCatalog() + * @generated + * @ordered + */ + protected static final String SPECIFIED_CATALOG_EDEFAULT = null; + + /** + * The cached value of the '{@link #getSpecifiedCatalog() Specified Catalog}' attribute. + * + * + * @see #getSpecifiedCatalog() + * @generated + * @ordered + */ + protected String specifiedCatalog = SPECIFIED_CATALOG_EDEFAULT; + + /** + * The default value of the '{@link #getDefaultCatalog() Default Catalog}' attribute. + * + * + * @see #getDefaultCatalog() + * @generated + * @ordered + */ + protected static final String DEFAULT_CATALOG_EDEFAULT = null; + + /** + * The cached value of the '{@link #getDefaultCatalog() Default Catalog}' attribute. + * + * + * @see #getDefaultCatalog() + * @generated + * @ordered + */ + protected String defaultCatalog = DEFAULT_CATALOG_EDEFAULT; + + /** + * The default value of the '{@link #getSchema() Schema}' attribute. + * + * + * @see #getSchema() + * @generated + * @ordered + */ + protected static final String SCHEMA_EDEFAULT = null; + + /** + * The default value of the '{@link #getSpecifiedSchema() Specified Schema}' attribute. + * + * + * @see #getSpecifiedSchema() + * @generated + * @ordered + */ + protected static final String SPECIFIED_SCHEMA_EDEFAULT = null; + + /** + * The cached value of the '{@link #getSpecifiedSchema() Specified Schema}' attribute. + * + * + * @see #getSpecifiedSchema() + * @generated + * @ordered + */ + protected String specifiedSchema = SPECIFIED_SCHEMA_EDEFAULT; + + /** + * The default value of the '{@link #getDefaultSchema() Default Schema}' attribute. + * + * + * @see #getDefaultSchema() + * @generated + * @ordered + */ + protected static final String DEFAULT_SCHEMA_EDEFAULT = null; + + /** + * The cached value of the '{@link #getDefaultSchema() Default Schema}' attribute. + * + * + * @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; + } + } + + /** + * + * + * @generated + */ + @Override + protected EClass eStaticClass() { + return JpaJavaMappingsPackage.Literals.ABSTRACT_JAVA_TABLE; + } + + /** + * Returns the value of the 'Name' attribute. + * + *

+ * If the meaning of the 'Name' attribute isn't clear, + * there really should be more of a description here... + *

+ * + * @return the value of the 'Name' 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 'Specified Name' attribute. + * + *

+ * If the meaning of the 'Specified Name' attribute isn't clear, + * there really should be more of a description here... + *

+ * + * @return the value of the 'Specified Name' 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 Specified Name}' attribute. + * + * + * @param value the new value of the 'Specified Name' 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 'Default Name' attribute. + * + *

+ * If the meaning of the 'Default Name' attribute isn't clear, + * there really should be more of a description here... + *

+ * + * @return the value of the 'Default Name' 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 'Catalog' attribute. + * + *

+ * If the meaning of the 'Catalog' attribute isn't clear, + * there really should be more of a description here... + *

+ * + * @return the value of the 'Catalog' 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 'Specified Catalog' attribute. + * + *

+ * If the meaning of the 'Specified Catalog' attribute isn't clear, + * there really should be more of a description here... + *

+ * + * @return the value of the 'Specified Catalog' 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 Specified Catalog}' attribute. + * + * + * @param value the new value of the 'Specified Catalog' 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 'Default Catalog' attribute. + * + *

+ * If the meaning of the 'Default Catalog' attribute isn't clear, + * there really should be more of a description here... + *

+ * + * @return the value of the 'Default Catalog' 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 'Schema' attribute. + * + *

+ * If the meaning of the 'Schema' attribute isn't clear, + * there really should be more of a description here... + *

+ * + * @return the value of the 'Schema' 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 'Specified Schema' attribute. + * + *

+ * If the meaning of the 'Specified Schema' attribute isn't clear, + * there really should be more of a description here... + *

+ * + * @return the value of the 'Specified Schema' 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 Specified Schema}' attribute. + * + * + * @param value the new value of the 'Specified Schema' 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 'Default Schema' attribute. + * + *

+ * If the meaning of the 'Default Schema' attribute isn't clear, + * there really should be more of a description here... + *

+ * + * @return the value of the 'Default Schema' attribute. + * @see org.eclipse.jpt.core.internal.content.java.mappings.JpaJavaMappingsPackage#getITable_DefaultSchema() + * @model changeable="false" + * @generated + */ + public String getDefaultSchema() { + return defaultSchema; + } + + /** + * + * + * @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); + } + + /** + * + * + * @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); + } + + /** + * + * + * @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); + } + + /** + * + * + * @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); + } + + /** + * + * + * @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); + } + + /** + * + * + * @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); + } + + /** + * + * + * @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; + +/** + * + * A representation of the model object 'Java Abstract Query'. + * + * + * + * @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() Name}' attribute. + * + * + * @see #getName() + * @generated + * @ordered + */ + protected static final String NAME_EDEFAULT = null; + + /** + * The cached value of the '{@link #getName() Name}' attribute. + * + * + * @see #getName() + * @generated + * @ordered + */ + protected String name = NAME_EDEFAULT; + + /** + * The default value of the '{@link #getQuery() Query}' attribute. + * + * + * @see #getQuery() + * @generated + * @ordered + */ + protected static final String QUERY_EDEFAULT = null; + + /** + * The cached value of the '{@link #getQuery() Query}' attribute. + * + * + * @see #getQuery() + * @generated + * @ordered + */ + protected String query = QUERY_EDEFAULT; + + /** + * The cached value of the '{@link #getHints() Hints}' containment reference list. + * + * + * @see #getHints() + * @generated + * @ordered + */ + protected EList 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) 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) notification.getOldValue()); + } + else { + // Notification.getNewValue() returns an array of the positions of objects that were removed + hintsRemoved((int[]) notification.getNewValue(), (List) 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; + } + } + + /** + * + * + * @generated + */ + @Override + protected EClass eStaticClass() { + return JpaJavaMappingsPackage.Literals.JAVA_ABSTRACT_QUERY; + } + + /** + * Returns the value of the 'Name' attribute. + * + *

+ * If the meaning of the 'Name' attribute isn't clear, + * there really should be more of a description here... + *

+ * + * @return the value of the 'Name' 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 Name}' attribute. + * + * + * @param value the new value of the 'Name' 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 'Query' attribute. + * + *

+ * If the meaning of the 'Query' attribute isn't clear, + * there really should be more of a description here... + *

+ * + * @return the value of the 'Query' 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 Query}' attribute. + * + * + * @param value the new value of the 'Query' 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 'Hints' containment reference list. + * The list contents are of type {@link org.eclipse.jpt.core.internal.mappings.IQueryHint}. + * + *

+ * If the meaning of the 'Hints' containment reference list isn't clear, + * there really should be more of a description here... + *

+ * + * @return the value of the 'Hints' 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 getHints() { + if (hints == null) { + hints = new EObjectContainmentEList(IQueryHint.class, this, JpaJavaMappingsPackage.JAVA_ABSTRACT_QUERY__HINTS); + } + return hints; + } + + /** + * + * + * @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); + } + + /** + * + * + * @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); + } + + /** + * + * + * @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) newValue); + return; + } + super.eSet(featureID, newValue); + } + + /** + * + * + * @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); + } + + /** + * + * + * @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); + } + + /** + * + * + * @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); + } + + /** + * + * + * @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); + } + + /** + * + * + * @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 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 hints) { + for (IQueryHint hint : hints) { + ((JavaQueryHint) hint).removeAnnotation(); + } + this.synchHintAnnotationsAfterRemove(indexes[0]); + } + + public void hintsCleared(List 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 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 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 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 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; + +/** + * + * A representation of the model object 'Java Association Override'. + * + * + * + * @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() Specified Join Columns}' containment reference list. + * + * + * @see #getSpecifiedJoinColumns() + * @generated + * @ordered + */ + protected EList specifiedJoinColumns; + + /** + * The cached value of the '{@link #getDefaultJoinColumns() Default Join Columns}' containment reference list. + * + * + * @see #getDefaultJoinColumns() + * @generated + * @ordered + */ + protected EList 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) 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; + } + } + + @Override + protected String nameElementName() { + return JPA.ASSOCIATION_OVERRIDE__NAME; + } + + /** + * + * + * @generated + */ + @Override + protected EClass eStaticClass() { + return JpaJavaMappingsPackage.Literals.JAVA_ASSOCIATION_OVERRIDE; + } + + public EList getJoinColumns() { + return this.getSpecifiedJoinColumns().isEmpty() ? this.getDefaultJoinColumns() : this.getSpecifiedJoinColumns(); + } + + /** + * Returns the value of the 'Specified Join Columns' containment reference list. + * The list contents are of type {@link org.eclipse.jpt.core.internal.mappings.IJoinColumn}. + * + *

+ * If the meaning of the 'Specified Join Columns' containment reference list isn't clear, + * there really should be more of a description here... + *

+ * + * @return the value of the 'Specified Join Columns' 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 getSpecifiedJoinColumns() { + if (specifiedJoinColumns == null) { + specifiedJoinColumns = new EObjectContainmentEList(IJoinColumn.class, this, JpaJavaMappingsPackage.JAVA_ASSOCIATION_OVERRIDE__SPECIFIED_JOIN_COLUMNS); + } + return specifiedJoinColumns; + } + + /** + * Returns the value of the 'Default Join Columns' containment reference list. + * The list contents are of type {@link org.eclipse.jpt.core.internal.mappings.IJoinColumn}. + * + *

+ * If the meaning of the 'Default Join Columns' containment reference list isn't clear, + * there really should be more of a description here... + *

+ * + * @return the value of the 'Default Join Columns' 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 getDefaultJoinColumns() { + if (defaultJoinColumns == null) { + defaultJoinColumns = new EObjectContainmentEList(IJoinColumn.class, this, JpaJavaMappingsPackage.JAVA_ASSOCIATION_OVERRIDE__DEFAULT_JOIN_COLUMNS); + } + return defaultJoinColumns; + } + + /** + * + * + * @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); + } + + /** + * + * + * @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); + } + + /** + * + * + * @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) newValue); + return; + case JpaJavaMappingsPackage.JAVA_ASSOCIATION_OVERRIDE__DEFAULT_JOIN_COLUMNS : + getDefaultJoinColumns().clear(); + getDefaultJoinColumns().addAll((Collection) newValue); + return; + } + super.eSet(featureID, newValue); + } + + /** + * + * + * @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); + } + + /** + * + * + * @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); + } + + /** + * + * + * @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); + } + + /** + * + * + * @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 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 joinColumns) { + for (IJoinColumn joinColumn : joinColumns) { + ((JavaJoinColumn) joinColumn).removeAnnotation(); + } + this.synchJoinColumnAnnotationsAfterRemove(indexes[0]); + } + + public void specifiedJoinColumnsCleared(List 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 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 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 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; + +/** + * + * A representation of the model object 'Java Attribute Mapping'. + * + * + * + * @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); + } + + /** + * + * + * @generated + */ + @Override + protected EClass eStaticClass() { + return JpaJavaMappingsPackage.Literals.JAVA_ATTRIBUTE_MAPPING; + } + + /** + * + * + * @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; + +/** + * + * A representation of the model object 'Java Attribute Override'. + * + * + * + * @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() Column}' containment reference. + * + * + * @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); + } + }; + } + + /** + * + * + * @generated + */ + @Override + protected EClass eStaticClass() { + return JpaJavaMappingsPackage.Literals.JAVA_ATTRIBUTE_OVERRIDE; + } + + /** + * Returns the value of the 'Column' containment reference. + * + *

+ * If the meaning of the 'Column' containment reference isn't clear, + * there really should be more of a description here... + *

+ * + * @return the value of the 'Column' 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; + } + + /** + * + * + * @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; + } + + /** + * + * + * @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); + } + + /** + * + * + * @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); + } + + /** + * + * + * @generated + */ + @Override + public boolean eIsSet(int featureID) { + switch (featureID) { + case JpaJavaMappingsPackage.JAVA_ATTRIBUTE_OVERRIDE__COLUMN : + return column != null; + } + return super.eIsSet(featureID); + } + + /** + * + * + * @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); + } + + /** + * + * + * @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; + +/** + * + * A representation of the model object 'Java Basic'. + * + * + * + * @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() Fetch}' attribute. + * + * + * @see #getFetch() + * @generated + * @ordered + */ + protected static final DefaultEagerFetchType FETCH_EDEFAULT = DefaultEagerFetchType.DEFAULT; + + /** + * The cached value of the '{@link #getFetch() Fetch}' attribute. + * + * + * @see #getFetch() + * @generated + * @ordered + */ + protected DefaultEagerFetchType fetch = FETCH_EDEFAULT; + + /** + * The default value of the '{@link #getOptional() Optional}' attribute. + * + * + * @see #getOptional() + * @generated + * @ordered + */ + protected static final DefaultTrueBoolean OPTIONAL_EDEFAULT = DefaultTrueBoolean.DEFAULT; + + /** + * The cached value of the '{@link #getOptional() Optional}' attribute. + * + * + * @see #getOptional() + * @generated + * @ordered + */ + protected DefaultTrueBoolean optional = OPTIONAL_EDEFAULT; + + /** + * The cached value of the '{@link #getColumn() Column}' containment reference. + * + * + * @see #getColumn() + * @generated + * @ordered + */ + protected IColumn column; + + /** + * The default value of the '{@link #isLob() Lob}' attribute. + * + * + * @see #isLob() + * @generated + * @ordered + */ + protected static final boolean LOB_EDEFAULT = false; + + /** + * The cached value of the '{@link #isLob() Lob}' attribute. + * + * + * @see #isLob() + * @generated + * @ordered + */ + protected boolean lob = LOB_EDEFAULT; + + /** + * The default value of the '{@link #getTemporal() Temporal}' attribute. + * + * + * @see #getTemporal() + * @generated + * @ordered + */ + protected static final TemporalType TEMPORAL_EDEFAULT = TemporalType.NULL; + + /** + * The cached value of the '{@link #getTemporal() Temporal}' attribute. + * + * + * @see #getTemporal() + * @generated + * @ordered + */ + protected TemporalType temporal = TEMPORAL_EDEFAULT; + + /** + * The default value of the '{@link #getEnumerated() Enumerated}' attribute. + * + * + * @see #getEnumerated() + * @generated + * @ordered + */ + protected static final EnumType ENUMERATED_EDEFAULT = EnumType.DEFAULT; + + /** + * The cached value of the '{@link #getEnumerated() Enumerated}' attribute. + * + * + * @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; + } + } + + /** + * + * + * @generated + */ + @Override + protected EClass eStaticClass() { + return JpaJavaMappingsPackage.Literals.JAVA_BASIC; + } + + /** + * Returns the value of the 'Column' containment reference. + * + *

+ * If the meaning of the 'Column' containment reference isn't clear, + * there really should be more of a description here... + *

+ * + * @return the value of the 'Column' 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; + } + + /** + * + * + * @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 'Fetch' attribute. + * The literals are from the enumeration {@link org.eclipse.jpt.core.internal.mappings.DefaultEagerFetchType}. + * + *

+ * If the meaning of the 'Fetch' attribute isn't clear, + * there really should be more of a description here... + *

+ * + * @return the value of the 'Fetch' 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 Fetch}' attribute. + * + * + * @param value the new value of the 'Fetch' 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 'Optional' attribute. + * The literals are from the enumeration {@link org.eclipse.jpt.core.internal.mappings.DefaultTrueBoolean}. + * + *

+ * If the meaning of the 'Optional' attribute isn't clear, + * there really should be more of a description here... + *

+ * + * @return the value of the 'Optional' 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 Optional}' attribute. + * + * + * @param value the new value of the 'Optional' 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 'Lob' attribute. + * + *

+ * If the meaning of the 'Lob' attribute isn't clear, + * there really should be more of a description here... + *

+ * + * @return the value of the 'Lob' 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 Lob}' attribute. + * + * + * @param value the new value of the 'Lob' 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 'Temporal' attribute. + * The literals are from the enumeration {@link org.eclipse.jpt.core.internal.mappings.TemporalType}. + * + *

+ * If the meaning of the 'Temporal' containment reference isn't clear, + * there really should be more of a description here... + *

+ * + * @return the value of the 'Temporal' 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 Temporal}' attribute. + * + * + * @param value the new value of the 'Temporal' 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 'Enumerated' attribute. + * The literals are from the enumeration {@link org.eclipse.jpt.core.internal.mappings.EnumType}. + * + *

+ * If the meaning of the 'Enumerated' attribute isn't clear, + * there really should be more of a description here... + *

+ * + * @return the value of the 'Enumerated' 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 Enumerated}' attribute. + * + * + * @param value the new value of the 'Enumerated' 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)); + } + + /** + * + * + * @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); + } + + /** + * + * + * @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); + } + + /** + * + * + * @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); + } + + /** + * + * + * @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); + } + + /** + * + * + * @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); + } + + /** + * + * + * @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); + } + + /** + * + * + * @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); + } + + /** + * + * + * @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; + +/** + * + * A representation of the model object 'Java Column'. + * + * + * + * @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() Length}' attribute. + * + * + * @see #getLength() + * @generated + * @ordered + */ + protected static final int LENGTH_EDEFAULT = 255; + + /** + * The cached value of the '{@link #getLength() Length}' attribute. + * + * + * @see #getLength() + * @generated + * @ordered + */ + protected int length = LENGTH_EDEFAULT; + + /** + * The default value of the '{@link #getPrecision() Precision}' attribute. + * + * + * @see #getPrecision() + * @generated + * @ordered + */ + protected static final int PRECISION_EDEFAULT = 0; + + /** + * The cached value of the '{@link #getPrecision() Precision}' attribute. + * + * + * @see #getPrecision() + * @generated + * @ordered + */ + protected int precision = PRECISION_EDEFAULT; + + /** + * The default value of the '{@link #getScale() Scale}' attribute. + * + * + * @see #getScale() + * @generated + * @ordered + */ + protected static final int SCALE_EDEFAULT = 0; + + /** + * The cached value of the '{@link #getScale() Scale}' attribute. + * + * + * @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; + } + } + + /** + * + * + * @generated + */ + @Override + protected EClass eStaticClass() { + return JpaJavaMappingsPackage.Literals.JAVA_COLUMN; + } + + /** + * Returns the value of the 'Length' attribute. + * The default value is "255". + * + *

+ * If the meaning of the 'Length' attribute isn't clear, + * there really should be more of a description here... + *

+ * + * @return the value of the 'Length' 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 Length}' attribute. + * + * + * @param value the new value of the 'Length' 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 'Precision' attribute. + * + *

+ * If the meaning of the 'Precision' attribute isn't clear, + * there really should be more of a description here... + *

+ * + * @return the value of the 'Precision' 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 Precision}' attribute. + * + * + * @param value the new value of the 'Precision' 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 'Scale' attribute. + * + *

+ * If the meaning of the 'Scale' attribute isn't clear, + * there really should be more of a description here... + *

+ * + * @return the value of the 'Scale' 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 Scale}' attribute. + * + * + * @param value the new value of the 'Scale' 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)); + } + + /** + * + * + * @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); + } + + /** + * + * + * @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); + } + + /** + * + * + * @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); + } + + /** + * + * + * @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); + } + + /** + * + * + * @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); + } + + /** + * + * + * @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); + } + + /** + * + * + * @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; + +/** + * + * A representation of the model object 'Java Discriminator Column'. + * + * + * + * @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() Default Name}' attribute. + * + * + * @see #getDefaultName() + * @generated + * @ordered + */ + protected static final String DEFAULT_NAME_EDEFAULT = null; + + /** + * The cached value of the '{@link #getDefaultName() Default Name}' attribute. + * + * + * @see #getDefaultName() + * @generated + * @ordered + */ + protected String defaultName = DEFAULT_NAME_EDEFAULT; + + /** + * The default value of the '{@link #getSpecifiedName() Specified Name}' attribute. + * + * + * @see #getSpecifiedName() + * @generated + * @ordered + */ + protected static final String SPECIFIED_NAME_EDEFAULT = null; + + /** + * The cached value of the '{@link #getSpecifiedName() Specified Name}' attribute. + * + * + * @see #getSpecifiedName() + * @generated + * @ordered + */ + protected String specifiedName = SPECIFIED_NAME_EDEFAULT; + + /** + * The default value of the '{@link #getName() Name}' attribute. + * + * + * @see #getName() + * @generated + * @ordered + */ + protected static final String NAME_EDEFAULT = null; + + /** + * The default value of the '{@link #getDiscriminatorType() Discriminator Type}' attribute. + * + * + * @see #getDiscriminatorType() + * @generated + * @ordered + */ + protected static final DiscriminatorType DISCRIMINATOR_TYPE_EDEFAULT = DiscriminatorType.DEFAULT; + + /** + * The cached value of the '{@link #getDiscriminatorType() Discriminator Type}' attribute. + * + * + * @see #getDiscriminatorType() + * @generated + * @ordered + */ + protected DiscriminatorType discriminatorType = DISCRIMINATOR_TYPE_EDEFAULT; + + /** + * The default value of the '{@link #getColumnDefinition() Column Definition}' attribute. + * + * + * @see #getColumnDefinition() + * @generated + * @ordered + */ + protected static final String COLUMN_DEFINITION_EDEFAULT = null; + + /** + * The cached value of the '{@link #getColumnDefinition() Column Definition}' attribute. + * + * + * @see #getColumnDefinition() + * @generated + * @ordered + */ + protected String columnDefinition = COLUMN_DEFINITION_EDEFAULT; + + /** + * The default value of the '{@link #getDefaultLength() Default Length}' attribute. + * + * + * @see #getDefaultLength() + * @generated + * @ordered + */ + protected static final int DEFAULT_LENGTH_EDEFAULT = 31; + + /** + * The cached value of the '{@link #getDefaultLength() Default Length}' attribute. + * + * + * @see #getDefaultLength() + * @generated + * @ordered + */ + protected int defaultLength = DEFAULT_LENGTH_EDEFAULT; + + /** + * The default value of the '{@link #getSpecifiedLength() Specified Length}' attribute. + * + * + * @see #getSpecifiedLength() + * @generated + * @ordered + */ + protected static final int SPECIFIED_LENGTH_EDEFAULT = -1; + + /** + * The cached value of the '{@link #getSpecifiedLength() Specified Length}' attribute. + * + * + * @see #getSpecifiedLength() + * @generated + * @ordered + */ + protected int specifiedLength = SPECIFIED_LENGTH_EDEFAULT; + + /** + * The default value of the '{@link #getLength() Length}' attribute. + * + * + * @see #getLength() + * @generated + * @ordered + */ + protected static final int LENGTH_EDEFAULT = 0; + + /** + * + * + * @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; + } + } + + /** + * + * + * @generated + */ + @Override + protected EClass eStaticClass() { + return JpaJavaMappingsPackage.Literals.JAVA_DISCRIMINATOR_COLUMN; + } + + /** + * Returns the value of the 'Default Name' attribute. + * + *

+ * If the meaning of the 'Default Name' attribute isn't clear, + * there really should be more of a description here... + *

+ * + * @return the value of the 'Default Name' 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 Default Name}' attribute. + * + * + * @param value the new value of the 'Default Name' 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 'Specified Name' attribute. + * + *

+ * If the meaning of the 'Specified Name' attribute isn't clear, + * there really should be more of a description here... + *

+ * + * @return the value of the 'Specified Name' 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 Specified Name}' attribute. + * + * + * @param value the new value of the 'Specified Name' 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 'Name' attribute. + * + *

+ * If the meaning of the 'Name' attribute isn't clear, + * there really should be more of a description here... + *

+ * + * @return the value of the 'Name' 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 'Discriminator Type' attribute. + * The literals are from the enumeration {@link org.eclipse.jpt.core.internal.mappings.DiscriminatorType}. + * + *

+ * If the meaning of the 'Discriminator Type' attribute isn't clear, + * there really should be more of a description here... + *

+ * + * @return the value of the 'Discriminator Type' 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 Discriminator Type}' attribute. + * + * + * @param value the new value of the 'Discriminator Type' 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 'Column Definition' attribute. + * + *

+ * If the meaning of the 'Column Definition' attribute isn't clear, + * there really should be more of a description here... + *

+ * + * @return the value of the 'Column Definition' 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 Column Definition}' attribute. + * + * + * @param value the new value of the 'Column Definition' 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 'Default Length' attribute. + * The default value is "31". + * + *

+ * If the meaning of the 'Default Length' attribute isn't clear, + * there really should be more of a description here... + *

+ * + * @return the value of the 'Default Length' 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 Default Length}' attribute. + * + * + * @param value the new value of the 'Default Length' 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 'Specified Length' attribute. + * The default value is "-1". + * + *

+ * If the meaning of the 'Specified Length' attribute isn't clear, + * there really should be more of a description here... + *

+ * + * @return the value of the 'Specified Length' 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 Specified Length}' attribute. + * + * + * @param value the new value of the 'Specified Length' 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 'Length' attribute. + * + *

+ * If the meaning of the 'Length' attribute isn't clear, + * there really should be more of a description here... + *

+ * + * @return the value of the 'Length' 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(); + } + + /** + * + * + * @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); + } + + /** + * + * + * @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); + } + + /** + * + * + * @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); + } + + /** + * + * + * @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); + } + + /** + * + * + * @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); + } + + /** + * + * + * @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); + } + + /** + * + * + * @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; + +/** + * + * A representation of the model object 'Java Embeddable'. + * + * + * + * @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; + } + + /** + * + * + * @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 associatedTableNamesIncludingInherited() { + return EmptyIterator.instance(); + } + + public Iterator associatedTables() { + return EmptyIterator.instance(); + } + + public Iterator associatedTablesIncludingInherited() { + return EmptyIterator.instance(); + } + + public Iterator overridableAttributeNames() { + return EmptyIterator.instance(); + } + + public Iterator 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 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; + +/** + * + * A representation of the model object 'Java Embedded'. + * + * + * + * @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() Specified Attribute Overrides}' containment reference list. + * + * + * @see #getSpecifiedAttributeOverrides() + * @generated + * @ordered + */ + protected EList specifiedAttributeOverrides; + + /** + * The cached value of the '{@link #getDefaultAttributeOverrides() Default Attribute Overrides}' containment reference list. + * + * + * @see #getDefaultAttributeOverrides() + * @generated + * @ordered + */ + protected EList 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) 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; + } + } + + // ********** 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 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 attributeOverrides) { + for (JavaAttributeOverride attributeOverride : attributeOverrides) { + attributeOverride.removeAnnotation(); + } + this.synchAttributeOverrideAnnotationsAfterRemove(indexes[0]); + } + + public void attributeOverridesCleared(List 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 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 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 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); + } + + /** + * + * + * @generated + */ + @Override + protected EClass eStaticClass() { + return JpaJavaMappingsPackage.Literals.JAVA_EMBEDDED; + } + + public EList getAttributeOverrides() { + EList list = new BasicEList(); + list.addAll(getSpecifiedAttributeOverrides()); + list.addAll(getDefaultAttributeOverrides()); + return list; + } + + /** + * Returns the value of the 'Specified Attribute Overrides' containment reference list. + * The list contents are of type {@link org.eclipse.jpt.core.internal.mappings.IAttributeOverride}. + * + *

+ * If the meaning of the 'Specified Attribute Overrides' containment reference list isn't clear, + * there really should be more of a description here... + *

+ * + * @return the value of the 'Specified Attribute Overrides' 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 getSpecifiedAttributeOverrides() { + if (specifiedAttributeOverrides == null) { + specifiedAttributeOverrides = new EObjectContainmentEList(IAttributeOverride.class, this, JpaJavaMappingsPackage.JAVA_EMBEDDED__SPECIFIED_ATTRIBUTE_OVERRIDES); + } + return specifiedAttributeOverrides; + } + + /** + * Returns the value of the 'Default Attribute Overrides' containment reference list. + * The list contents are of type {@link org.eclipse.jpt.core.internal.mappings.IAttributeOverride}. + * + *

+ * If the meaning of the 'Default Attribute Overrides' containment reference list isn't clear, + * there really should be more of a description here... + *

+ * + * @return the value of the 'Default Attribute Overrides' 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 getDefaultAttributeOverrides() { + if (defaultAttributeOverrides == null) { + defaultAttributeOverrides = new EObjectContainmentEList(IAttributeOverride.class, this, JpaJavaMappingsPackage.JAVA_EMBEDDED__DEFAULT_ATTRIBUTE_OVERRIDES); + } + return defaultAttributeOverrides; + } + + public IEmbeddable embeddable() { + return this.embeddable; + } + + /** + * + * + * @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); + } + + /** + * + * + * @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); + } + + /** + * + * + * @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) newValue); + return; + case JpaJavaMappingsPackage.JAVA_EMBEDDED__DEFAULT_ATTRIBUTE_OVERRIDES : + getDefaultAttributeOverrides().clear(); + getDefaultAttributeOverrides().addAll((Collection) newValue); + return; + } + super.eSet(featureID, newValue); + } + + /** + * + * + * @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); + } + + /** + * + * + * @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); + } + + /** + * + * + * @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); + } + + /** + * + * + * @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 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 attributeOverrides) { + for (IAttributeOverride attributeOverride : attributeOverrides) { + String attributeOverrideName = attributeOverride.getName(); + if (attributeOverrideName != null && attributeOverrideName.equals(name)) { + return true; + } + } + return false; + } + + public Iterator 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; + +/** + * + * A representation of the model object 'Java Embedded Id'. + * + * + * + * @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); + } + + /** + * + * + * @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; + +/** + * + * A representation of the model object 'Java Entity'. + * + * + *

+ * The following features are supported: + *

    + *
  • {@link org.eclipse.jpt.core.internal.content.java.mappings.JavaEntity#getSecondaryTables Secondary Tables}
  • + *
+ *

+ * + * @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() Specified Name}' attribute. + * + * + * @see #getSpecifiedName() + * @generated + * @ordered + */ + protected static final String SPECIFIED_NAME_EDEFAULT = null; + + /** + * The cached value of the '{@link #getSpecifiedName() Specified Name}' attribute. + * + * + * @see #getSpecifiedName() + * @generated + * @ordered + */ + protected String specifiedName = SPECIFIED_NAME_EDEFAULT; + + /** + * The default value of the '{@link #getDefaultName() Default Name}' attribute. + * + * + * @see #getDefaultName() + * @generated + * @ordered + */ + protected static final String DEFAULT_NAME_EDEFAULT = null; + + /** + * The cached value of the '{@link #getDefaultName() Default Name}' attribute. + * + * + * @see #getDefaultName() + * @generated + * @ordered + */ + protected String defaultName = DEFAULT_NAME_EDEFAULT; + + /** + * The cached value of the '{@link #getTable() Table}' containment reference. + * + * + * @see #getTable() + * @generated + * @ordered + */ + protected ITable table; + + /** + * The cached value of the '{@link #getSpecifiedPrimaryKeyJoinColumns() Specified Primary Key Join Columns}' containment reference list. + * + * + * @see #getSpecifiedPrimaryKeyJoinColumns() + * @generated + * @ordered + */ + protected EList specifiedPrimaryKeyJoinColumns; + + /** + * The cached value of the '{@link #getDefaultPrimaryKeyJoinColumns() Default Primary Key Join Columns}' containment reference list. + * + * + * @see #getDefaultPrimaryKeyJoinColumns() + * @generated + * @ordered + */ + protected EList defaultPrimaryKeyJoinColumns; + + /** + * The default value of the '{@link #getInheritanceStrategy() Inheritance Strategy}' attribute. + * + * + * @see #getInheritanceStrategy() + * @generated + * @ordered + */ + protected static final InheritanceType INHERITANCE_STRATEGY_EDEFAULT = InheritanceType.DEFAULT; + + /** + * The cached value of the '{@link #getInheritanceStrategy() Inheritance Strategy}' attribute. + * + * + * @see #getInheritanceStrategy() + * @generated + * @ordered + */ + protected InheritanceType inheritanceStrategy = INHERITANCE_STRATEGY_EDEFAULT; + + /** + * The default value of the '{@link #getDefaultDiscriminatorValue() Default Discriminator Value}' attribute. + * + * + * @see #getDefaultDiscriminatorValue() + * @generated + * @ordered + */ + protected static final String DEFAULT_DISCRIMINATOR_VALUE_EDEFAULT = null; + + /** + * The cached value of the '{@link #getDefaultDiscriminatorValue() Default Discriminator Value}' attribute. + * + * + * @see #getDefaultDiscriminatorValue() + * @generated + * @ordered + */ + protected String defaultDiscriminatorValue = DEFAULT_DISCRIMINATOR_VALUE_EDEFAULT; + + /** + * The default value of the '{@link #getSpecifiedDiscriminatorValue() Specified Discriminator Value}' attribute. + * + * + * @see #getSpecifiedDiscriminatorValue() + * @generated + * @ordered + */ + protected static final String SPECIFIED_DISCRIMINATOR_VALUE_EDEFAULT = null; + + /** + * The cached value of the '{@link #getSpecifiedDiscriminatorValue() Specified Discriminator Value}' attribute. + * + * + * @see #getSpecifiedDiscriminatorValue() + * @generated + * @ordered + */ + protected String specifiedDiscriminatorValue = SPECIFIED_DISCRIMINATOR_VALUE_EDEFAULT; + + /** + * The default value of the '{@link #getDiscriminatorValue() Discriminator Value}' attribute. + * + * + * @see #getDiscriminatorValue() + * @generated + * @ordered + */ + protected static final String DISCRIMINATOR_VALUE_EDEFAULT = null; + + /** + * The cached value of the '{@link #getDiscriminatorColumn() Discriminator Column}' containment reference. + * + * + * @see #getDiscriminatorColumn() + * @generated + * @ordered + */ + protected IDiscriminatorColumn discriminatorColumn; + + /** + * The cached value of the '{@link #getSequenceGenerator() Sequence Generator}' containment reference. + * + * + * @see #getSequenceGenerator() + * @generated + * @ordered + */ + protected ISequenceGenerator sequenceGenerator; + + /** + * The cached value of the '{@link #getTableGenerator() Table Generator}' containment reference. + * + * + * @see #getTableGenerator() + * @generated + * @ordered + */ + protected ITableGenerator tableGenerator; + + /** + * The cached value of the '{@link #getSpecifiedAttributeOverrides() Specified Attribute Overrides}' containment reference list. + * + * + * @see #getSpecifiedAttributeOverrides() + * @generated + * @ordered + */ + protected EList specifiedAttributeOverrides; + + /** + * The cached value of the '{@link #getDefaultAttributeOverrides() Default Attribute Overrides}' containment reference list. + * + * + * @see #getDefaultAttributeOverrides() + * @generated + * @ordered + */ + protected EList defaultAttributeOverrides; + + /** + * The cached value of the '{@link #getSpecifiedAssociationOverrides() Specified Association Overrides}' containment reference list. + * + * + * @see #getSpecifiedAssociationOverrides() + * @generated + * @ordered + */ + protected EList specifiedAssociationOverrides; + + /** + * The cached value of the '{@link #getDefaultAssociationOverrides() Default Association Overrides}' containment reference list. + * + * + * @see #getDefaultAssociationOverrides() + * @generated + * @ordered + */ + protected EList defaultAssociationOverrides; + + /** + * The cached value of the '{@link #getNamedQueries() Named Queries}' containment reference list. + * + * + * @see #getNamedQueries() + * @generated + * @ordered + */ + protected EList namedQueries; + + /** + * The cached value of the '{@link #getNamedNativeQueries() Named Native Queries}' containment reference list. + * + * + * @see #getNamedNativeQueries() + * @generated + * @ordered + */ + protected EList namedNativeQueries; + + /** + * The cached value of the '{@link #getSecondaryTables() Secondary Tables}' containment reference list. + * + * + * @see #getSecondaryTables() + * @generated + * @ordered + */ + protected EList 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) 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) 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) notification.getOldValue()); + } + else { + // Notification.getNewValue() returns an array of the positions of objects that were removed + associationOverridesRemoved((int[]) notification.getNewValue(), (List) 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) 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) notification.getOldValue()); + } + else { + // Notification.getNewValue() returns an array of the positions of objects that were removed + namedQueriesRemoved((int[]) notification.getNewValue(), (List) 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) 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) notification.getOldValue()); + } + else { + // Notification.getNewValue() returns an array of the positions of objects that were removed + namedNativeQueriesRemoved((int[]) notification.getNewValue(), (List) 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 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 attributeOverrides) { + for (JavaAttributeOverride attributeOverride : attributeOverrides) { + attributeOverride.removeAnnotation(); + } + this.synchAttributeOverrideAnnotationsAfterRemove(indexes[0]); + } + + public void attributeOverridesCleared(List 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 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 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 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 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 associationOverrides) { + for (JavaAssociationOverride associationOverride : associationOverrides) { + associationOverride.removeAnnotation(); + } + this.synchAssociationOverrideAnnotationsAfterRemove(indexes[0]); + } + + public void associationOverridesCleared(List 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 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 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 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 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 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 secondaryTables) { + for (Iterator stream = secondaryTables.iterator(); stream.hasNext();) { + JavaSecondaryTable secondaryTable = (JavaSecondaryTable) stream.next(); + secondaryTable.removeAnnotation(); + } + this.synchSecondaryTableAnnotationsAfterRemove(indexes[0]); + } + + public void secondaryTablesCleared(List secondaryTables) { + for (Iterator 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 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 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 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 primaryKeyJoinColumns) { + if (!primaryKeyJoinColumns.isEmpty() && ((JavaPrimaryKeyJoinColumn) primaryKeyJoinColumns.get(0)).annotation(getType().astRoot()) == null) { + this.synchPKJCAnnotationsAfterAdd(index + primaryKeyJoinColumns.size()); + for (Iterator 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 primaryKeyJoinColumns) { + for (Iterator stream = primaryKeyJoinColumns.iterator(); stream.hasNext();) { + JavaPrimaryKeyJoinColumn primaryKeyJoinColumn = (JavaPrimaryKeyJoinColumn) stream.next(); + primaryKeyJoinColumn.removeAnnotation(); + } + this.synchPKJCAnnotationsAfterRemove(indexes[0]); + } + + public void specifiedPrimaryKeyJoinColumnsCleared(List primaryKeyJoinColumns) { + for (Iterator 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 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 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 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 namedQueries) { + for (JavaNamedQuery namedQuery : namedQueries) { + namedQuery.removeAnnotation(); + } + this.synchNamedQueryAnnotationsAfterRemove(indexes[0]); + } + + public void namedQueriesCleared(List 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 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 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 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 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 namedQueries) { + for (JavaNamedNativeQuery namedQuery : namedQueries) { + namedQuery.removeAnnotation(); + } + this.synchNamedNativeQueryAnnotationsAfterRemove(indexes[0]); + } + + public void namedNativeQueriesCleared(List 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 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 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 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); + } + + /** + * + * + * @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 'Specified Name' attribute. + * + *

+ * If the meaning of the 'Specified Name' attribute isn't clear, + * there really should be more of a description here... + *

+ * + * @return the value of the 'Specified Name' 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 Specified Name}' attribute. + * + * + * @param value the new value of the 'Specified Name' 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 'Default Name' attribute. + * + *

+ * If the meaning of the 'Default Name' attribute isn't clear, + * there really should be more of a description here... + *

+ * + * @return the value of the 'Default Name' 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 'Table' containment reference. + * + *

+ * If the meaning of the 'Table' containment reference isn't clear, + * there really should be more of a description here... + *

+ * + * @return the value of the 'Table' 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; + } + + /** + * + * + * @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 'Secondary Tables' containment reference list. + * The list contents are of type {@link org.eclipse.jpt.core.internal.mappings.ISecondaryTable}. + * + *

+ * If the meaning of the 'Secondary Tables' containment reference list isn't clear, + * there really should be more of a description here... + *

+ * + * @return the value of the 'Secondary Tables' 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 getSecondaryTables() { + if (secondaryTables == null) { + secondaryTables = new EObjectContainmentEList(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 'Inheritance Strategy' attribute. + * The literals are from the enumeration {@link org.eclipse.jpt.core.internal.mappings.InheritanceType}. + * + *

+ * If the meaning of the 'Inheritance Strategy' attribute isn't clear, + * there really should be more of a description here... + *

+ * + * @return the value of the 'Inheritance Strategy' 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 Inheritance Strategy}' attribute. + * + * + * @param value the new value of the 'Inheritance Strategy' 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 'Discriminator Column' containment reference. + * + *

+ * If the meaning of the 'Discriminator Column' containment reference isn't clear, + * there really should be more of a description here... + *

+ * + * @return the value of the 'Discriminator Column' 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; + } + + /** + * + * + * @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 'Sequence Generator' containment reference. + * + *

+ * If the meaning of the 'Sequence Generator' containment reference isn't clear, + * there really should be more of a description here... + *

+ * + * @return the value of the 'Sequence Generator' 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; + } + + /** + * + * + * @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 Sequence Generator}' containment reference. + * + * + * @param value the new value of the 'Sequence Generator' 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 'Table Generator' containment reference. + * + *

+ * If the meaning of the 'Table Generator' containment reference isn't clear, + * there really should be more of a description here... + *

+ * + * @return the value of the 'Table Generator' 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; + } + + /** + * + * + * @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 Table Generator}' containment reference. + * + * + * @param value the new value of the 'Table Generator' 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 'Default Discriminator Value' attribute. + * + *

+ * If the meaning of the 'Default Discriminator Value' attribute isn't clear, + * there really should be more of a description here... + *

+ * + * @return the value of the 'Default Discriminator Value' 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 Default Discriminator Value}' attribute. + * + * + * @param value the new value of the 'Default Discriminator Value' 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 'Specified Discriminator Value' attribute. + * + *

+ * If the meaning of the 'Specified Discriminator Value' attribute isn't clear, + * there really should be more of a description here... + *

+ * + * @return the value of the 'Specified Discriminator Value' 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 Specified Discriminator Value}' attribute. + * + * + * @param value the new value of the 'Specified Discriminator Value' 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 'Discriminator Value' attribute. + * + *

+ * If the meaning of the 'Discriminator Value' reference isn't clear, + * there really should be more of a description here... + *

+ * + * @return the value of the 'Discriminator Value' 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 getPrimaryKeyJoinColumns() { + return this.getSpecifiedPrimaryKeyJoinColumns().isEmpty() ? this.getDefaultPrimaryKeyJoinColumns() : this.getSpecifiedPrimaryKeyJoinColumns(); + } + + /** + * Returns the value of the 'Specified Primary Key Join Columns' containment reference list. + * The list contents are of type {@link org.eclipse.jpt.core.internal.mappings.IPrimaryKeyJoinColumn}. + * + *

+ * If the meaning of the 'Specified Primary Key Join Columns' containment reference list isn't clear, + * there really should be more of a description here... + *

+ * + * @return the value of the 'Specified Primary Key Join Columns' 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 getSpecifiedPrimaryKeyJoinColumns() { + if (specifiedPrimaryKeyJoinColumns == null) { + specifiedPrimaryKeyJoinColumns = new EObjectContainmentEList(IPrimaryKeyJoinColumn.class, this, JpaJavaMappingsPackage.JAVA_ENTITY__SPECIFIED_PRIMARY_KEY_JOIN_COLUMNS); + } + return specifiedPrimaryKeyJoinColumns; + } + + /** + * Returns the value of the 'Default Primary Key Join Columns' containment reference list. + * The list contents are of type {@link org.eclipse.jpt.core.internal.mappings.IPrimaryKeyJoinColumn}. + * + *

+ * If the meaning of the 'Default Primary Key Join Columns' containment reference list isn't clear, + * there really should be more of a description here... + *

+ * + * @return the value of the 'Default Primary Key Join Columns' 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 getDefaultPrimaryKeyJoinColumns() { + if (defaultPrimaryKeyJoinColumns == null) { + defaultPrimaryKeyJoinColumns = new EObjectContainmentEList(IPrimaryKeyJoinColumn.class, this, JpaJavaMappingsPackage.JAVA_ENTITY__DEFAULT_PRIMARY_KEY_JOIN_COLUMNS); + } + return defaultPrimaryKeyJoinColumns; + } + + public EList getAttributeOverrides() { + EList list = new BasicEList(); + 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 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 associationOverrides) { + for (IAssociationOverride associationOverride : associationOverrides) { + String overrideName = associationOverride.getName(); + if (overrideName != null && overrideName.equals(name)) { + return true; + } + } + return false; + } + + /** + * Returns the value of the 'Specified Attribute Overrides' containment reference list. + * The list contents are of type {@link org.eclipse.jpt.core.internal.mappings.IAttributeOverride}. + * + *

+ * If the meaning of the 'Specified Attribute Overrides' reference list isn't clear, + * there really should be more of a description here... + *

+ * + * @return the value of the 'Specified Attribute Overrides' 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 getSpecifiedAttributeOverrides() { + if (specifiedAttributeOverrides == null) { + specifiedAttributeOverrides = new EObjectContainmentEList(IAttributeOverride.class, this, JpaJavaMappingsPackage.JAVA_ENTITY__SPECIFIED_ATTRIBUTE_OVERRIDES); + } + return specifiedAttributeOverrides; + } + + /** + * Returns the value of the 'Default Attribute Overrides' containment reference list. + * The list contents are of type {@link org.eclipse.jpt.core.internal.mappings.IAttributeOverride}. + * + *

+ * If the meaning of the 'Default Attribute Overrides' reference list isn't clear, + * there really should be more of a description here... + *

+ * + * @return the value of the 'Default Attribute Overrides' 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 getDefaultAttributeOverrides() { + if (defaultAttributeOverrides == null) { + defaultAttributeOverrides = new EObjectContainmentEList(IAttributeOverride.class, this, JpaJavaMappingsPackage.JAVA_ENTITY__DEFAULT_ATTRIBUTE_OVERRIDES); + } + return defaultAttributeOverrides; + } + + public EList getAssociationOverrides() { + EList list = new BasicEList(); + list.addAll(getSpecifiedAssociationOverrides()); + list.addAll(getDefaultAssociationOverrides()); + return list; + } + + /** + * Returns the value of the 'Specified Association Overrides' containment reference list. + * The list contents are of type {@link org.eclipse.jpt.core.internal.mappings.IAssociationOverride}. + * + *

+ * If the meaning of the 'Specified Association Overrides' reference list isn't clear, + * there really should be more of a description here... + *

+ * + * @return the value of the 'Specified Association Overrides' 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 getSpecifiedAssociationOverrides() { + if (specifiedAssociationOverrides == null) { + specifiedAssociationOverrides = new EObjectContainmentEList(IAssociationOverride.class, this, JpaJavaMappingsPackage.JAVA_ENTITY__SPECIFIED_ASSOCIATION_OVERRIDES); + } + return specifiedAssociationOverrides; + } + + /** + * Returns the value of the 'Default Association Overrides' containment reference list. + * The list contents are of type {@link org.eclipse.jpt.core.internal.mappings.IAssociationOverride}. + * + *

+ * If the meaning of the 'Default Association Overrides' reference list isn't clear, + * there really should be more of a description here... + *

+ * + * @return the value of the 'Default Association Overrides' 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 getDefaultAssociationOverrides() { + if (defaultAssociationOverrides == null) { + defaultAssociationOverrides = new EObjectContainmentEList(IAssociationOverride.class, this, JpaJavaMappingsPackage.JAVA_ENTITY__DEFAULT_ASSOCIATION_OVERRIDES); + } + return defaultAssociationOverrides; + } + + /** + * Returns the value of the 'Named Queries' containment reference list. + * The list contents are of type {@link org.eclipse.jpt.core.internal.mappings.INamedQuery}. + * + *

+ * If the meaning of the 'Named Queries' containment reference list isn't clear, + * there really should be more of a description here... + *

+ * + * @return the value of the 'Named Queries' 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 getNamedQueries() { + if (namedQueries == null) { + namedQueries = new EObjectContainmentEList(INamedQuery.class, this, JpaJavaMappingsPackage.JAVA_ENTITY__NAMED_QUERIES); + } + return namedQueries; + } + + /** + * Returns the value of the 'Named Native Queries' containment reference list. + * The list contents are of type {@link org.eclipse.jpt.core.internal.mappings.INamedNativeQuery}. + * + *

+ * If the meaning of the 'Named Native Queries' containment reference list isn't clear, + * there really should be more of a description here... + *

+ * + * @return the value of the 'Named Native Queries' 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 getNamedNativeQueries() { + if (namedNativeQueries == null) { + namedNativeQueries = new EObjectContainmentEList(INamedNativeQuery.class, this, JpaJavaMappingsPackage.JAVA_ENTITY__NAMED_NATIVE_QUERIES); + } + return namedNativeQueries; + } + + /** + * + * + * @model + * @generated NOT + */ + public boolean discriminatorValueIsAllowed() { + return !getType().isAbstract(); + } + + public IEntity parentEntity() { + for (Iterator 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 i = getPersistentType().inheritanceHierarchy(); i.hasNext();) { + IPersistentType persistentType = i.next(); + if (persistentType.getMapping() instanceof IEntity) { + rootEntity = (IEntity) persistentType.getMapping(); + } + } + return rootEntity; + } + + /** + * + * + * @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)); + } + + /** + * + * + * @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); + } + + /** + * + * + * @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) newValue); + return; + case JpaJavaMappingsPackage.JAVA_ENTITY__DEFAULT_PRIMARY_KEY_JOIN_COLUMNS : + getDefaultPrimaryKeyJoinColumns().clear(); + getDefaultPrimaryKeyJoinColumns().addAll((Collection) 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) newValue); + return; + case JpaJavaMappingsPackage.JAVA_ENTITY__DEFAULT_ATTRIBUTE_OVERRIDES : + getDefaultAttributeOverrides().clear(); + getDefaultAttributeOverrides().addAll((Collection) newValue); + return; + case JpaJavaMappingsPackage.JAVA_ENTITY__SPECIFIED_ASSOCIATION_OVERRIDES : + getSpecifiedAssociationOverrides().clear(); + getSpecifiedAssociationOverrides().addAll((Collection) newValue); + return; + case JpaJavaMappingsPackage.JAVA_ENTITY__DEFAULT_ASSOCIATION_OVERRIDES : + getDefaultAssociationOverrides().clear(); + getDefaultAssociationOverrides().addAll((Collection) newValue); + return; + case JpaJavaMappingsPackage.JAVA_ENTITY__NAMED_QUERIES : + getNamedQueries().clear(); + getNamedQueries().addAll((Collection) newValue); + return; + case JpaJavaMappingsPackage.JAVA_ENTITY__NAMED_NATIVE_QUERIES : + getNamedNativeQueries().clear(); + getNamedNativeQueries().addAll((Collection) newValue); + return; + case JpaJavaMappingsPackage.JAVA_ENTITY__SECONDARY_TABLES : + getSecondaryTables().clear(); + getSecondaryTables().addAll((Collection) newValue); + return; + } + super.eSet(featureID, newValue); + } + + /** + * + * + * @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); + } + + /** + * + * + * @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); + } + + /** + * + * + * @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); + } + + /** + * + * + * @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); + } + + /** + * + * + * @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 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 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 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 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 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 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 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 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 associatedTables() { + return new CompositeIterator(this.getTable(), this.getSecondaryTables().iterator()); + } + + public Iterator associatedTablesIncludingInherited() { + return new CompositeIterator(new TransformationIterator>(this.inheritanceHierarchy()) { + @Override + protected Iterator transform(ITypeMapping mapping) { + return new FilteringIterator(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 associatedTableNamesIncludingInherited() { + return this.nonNullTableNames(this.associatedTablesIncludingInherited()); + } + + private Iterator nonNullTableNames(Iterator tables) { + return new FilteringIterator(this.tableNames(tables)) { + @Override + protected boolean accept(Object o) { + return o != null; + } + }; + } + + private Iterator tableNames(Iterator tables) { + return new TransformationIterator(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 inheritanceHierarchy() { + return new TransformationIterator(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 allOverridableAttributeNames() { + return new CompositeIterator(new TransformationIterator>(this.inheritanceHierarchy()) { + @Override + protected Iterator transform(ITypeMapping mapping) { + return mapping.overridableAttributeNames(); + } + }); + } + + public Iterator allOverridableAssociationNames() { + return new CompositeIterator(new TransformationIterator>(this.inheritanceHierarchy()) { + @Override + protected Iterator transform(ITypeMapping mapping) { + return mapping.overridableAssociationNames(); + } + }); + } + + public Iterator overridableAttributeNames() { + return EmptyIterator.instance(); + } + + public Iterator 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 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; + +/** + * + * A representation of the model object 'Java Generated Value'. + * + * + * + * @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() Strategy}' attribute. + * + * + * @see #getStrategy() + * @generated + * @ordered + */ + protected static final GenerationType STRATEGY_EDEFAULT = GenerationType.DEFAULT; + + /** + * The cached value of the '{@link #getStrategy() Strategy}' attribute. + * + * + * @see #getStrategy() + * @generated + * @ordered + */ + protected GenerationType strategy = STRATEGY_EDEFAULT; + + /** + * The default value of the '{@link #getGenerator() Generator}' attribute. + * + * + * @see #getGenerator() + * @generated + * @ordered + */ + protected static final String GENERATOR_EDEFAULT = null; + + /** + * The cached value of the '{@link #getGenerator() Generator}' attribute. + * + * + * @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; + } + } + + /** + * + * + * @generated + */ + @Override + protected EClass eStaticClass() { + return JpaJavaMappingsPackage.Literals.JAVA_GENERATED_VALUE; + } + + /** + * Returns the value of the 'Strategy' attribute. + * The literals are from the enumeration {@link org.eclipse.jpt.core.internal.mappings.GenerationType}. + * + *

+ * If the meaning of the 'Strategy' attribute isn't clear, + * there really should be more of a description here... + *

+ * + * @return the value of the 'Strategy' 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 Strategy}' attribute. + * + * + * @param value the new value of the 'Strategy' 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 'Generator' attribute. + * + *

+ * If the meaning of the 'Generator' attribute isn't clear, + * there really should be more of a description here... + *

+ * + * @return the value of the 'Generator' 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 Generator}' attribute. + * + * + * @param value the new value of the 'Generator' 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)); + } + + /** + * + * + * @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); + } + + /** + * + * + * @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); + } + + /** + * + * + * @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); + } + + /** + * + * + * @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); + } + + /** + * + * + * @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); + } + + /** + * + * + * @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); + } + + /** + * + * + * @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; + +/** + * + * A representation of the model object 'Java Generator'. + * + * + * + * @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() Name}' attribute. + * + * + * @see #getName() + * @generated + * @ordered + */ + protected static final String NAME_EDEFAULT = null; + + /** + * The cached value of the '{@link #getName() Name}' attribute. + * + * + * @see #getName() + * @generated + * @ordered + */ + protected String name = NAME_EDEFAULT; + + /** + * The default value of the '{@link #getInitialValue() Initial Value}' attribute. + * + * + * @see #getInitialValue() + * @generated + * @ordered + */ + protected static final int INITIAL_VALUE_EDEFAULT = 0; + + /** + * The default value of the '{@link #getSpecifiedInitialValue() Specified Initial Value}' attribute. + * + * + * @see #getSpecifiedInitialValue() + * @generated + * @ordered + */ + protected static final int SPECIFIED_INITIAL_VALUE_EDEFAULT = -1; + + /** + * The cached value of the '{@link #getSpecifiedInitialValue() Specified Initial Value}' attribute. + * + * + * @see #getSpecifiedInitialValue() + * @generated + * @ordered + */ + protected int specifiedInitialValue = SPECIFIED_INITIAL_VALUE_EDEFAULT; + + /** + * The default value of the '{@link #getDefaultInitialValue() Default Initial Value}' attribute. + * + * + * @see #getDefaultInitialValue() + * @generated + * @ordered + */ + protected static final int DEFAULT_INITIAL_VALUE_EDEFAULT = 0; + + /** + * The cached value of the '{@link #getDefaultInitialValue() Default Initial Value}' attribute. + * + * + * @see #getDefaultInitialValue() + * @generated + * @ordered + */ + protected int defaultInitialValue = DEFAULT_INITIAL_VALUE_EDEFAULT; + + /** + * The default value of the '{@link #getAllocationSize() Allocation Size}' attribute. + * + * + * @see #getAllocationSize() + * @generated + * @ordered + */ + protected static final int ALLOCATION_SIZE_EDEFAULT = 0; + + /** + * The default value of the '{@link #getSpecifiedAllocationSize() Specified Allocation Size}' attribute. + * + * + * @see #getSpecifiedAllocationSize() + * @generated + * @ordered + */ + protected static final int SPECIFIED_ALLOCATION_SIZE_EDEFAULT = -1; + + /** + * The cached value of the '{@link #getSpecifiedAllocationSize() Specified Allocation Size}' attribute. + * + * + * @see #getSpecifiedAllocationSize() + * @generated + * @ordered + */ + protected int specifiedAllocationSize = SPECIFIED_ALLOCATION_SIZE_EDEFAULT; + + /** + * The default value of the '{@link #getDefaultAllocationSize() Default Allocation Size}' attribute. + * + * + * @see #getDefaultAllocationSize() + * @generated + * @ordered + */ + protected static final int DEFAULT_ALLOCATION_SIZE_EDEFAULT = 0; + + /** + * The cached value of the '{@link #getDefaultAllocationSize() Default Allocation Size}' attribute. + * + * + * @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(); + + /** + * + * + * @generated + */ + @Override + protected EClass eStaticClass() { + return JpaJavaMappingsPackage.Literals.JAVA_GENERATOR; + } + + /** + * Returns the value of the 'Name' attribute. + * + *

+ * If the meaning of the 'Name' attribute isn't clear, + * there really should be more of a description here... + *

+ * + * @return the value of the 'Name' 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 Name}' attribute. + * + * + * @param value the new value of the 'Name' 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 'Specified Initial Value' attribute. + * The default value is "-1". + * + *

+ * If the meaning of the 'Specified Initial Value' attribute isn't clear, + * there really should be more of a description here... + *

+ * + * @return the value of the 'Specified Initial Value' 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 Specified Initial Value}' attribute. + * + * + * @param value the new value of the 'Specified Initial Value' 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 'Default Initial Value' attribute. + * + *

+ * If the meaning of the 'Default Initial Value' attribute isn't clear, + * there really should be more of a description here... + *

+ * + * @return the value of the 'Default Initial Value' 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 'Specified Allocation Size' attribute. + * The default value is "-1". + * + *

+ * If the meaning of the 'Specified Allocation Size' attribute isn't clear, + * there really should be more of a description here... + *

+ * + * @return the value of the 'Specified Allocation Size' 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 Specified Allocation Size}' attribute. + * + * + * @param value the new value of the 'Specified Allocation Size' 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 'Default Allocation Size' attribute. + * + *

+ * If the meaning of the 'Default Allocation Size' attribute isn't clear, + * there really should be more of a description here... + *

+ * + * @return the value of the 'Default Allocation Size' attribute. + * @see org.eclipse.jpt.core.internal.content.java.mappings.JpaJavaMappingsPackage#getIGenerator_DefaultAllocationSize() + * @model changeable="false" + * @generated + */ + public int getDefaultAllocationSize() { + return defaultAllocationSize; + } + + /** + * + * + * @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); + } + + /** + * + * + * @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); + } + + /** + * + * + * @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); + } + + /** + * + * + * @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); + } + + /** + * + * + * @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); + } + + /** + * + * + * @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); + } + + /** + * + * + * @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; + +/** + * + * A representation of the model object 'Java Id'. + * + * + * + * @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() Column}' containment reference. + * + * + * @see #getColumn() + * @generated + * @ordered + */ + protected IColumn column; + + /** + * The cached value of the '{@link #getGeneratedValue() Generated Value}' containment reference. + * + * + * @see #getGeneratedValue() + * @generated + * @ordered + */ + protected IGeneratedValue generatedValue; + + /** + * The default value of the '{@link #getTemporal() Temporal}' attribute. + * + * + * @see #getTemporal() + * @generated + * @ordered + */ + protected static final TemporalType TEMPORAL_EDEFAULT = TemporalType.NULL; + + /** + * The cached value of the '{@link #getTemporal() Temporal}' attribute. + * + * + * @see #getTemporal() + * @generated + * @ordered + */ + protected TemporalType temporal = TEMPORAL_EDEFAULT; + + /** + * The cached value of the '{@link #getTableGenerator() Table Generator}' containment reference. + * + * + * @see #getTableGenerator() + * @generated + * @ordered + */ + protected ITableGenerator tableGenerator; + + /** + * The cached value of the '{@link #getSequenceGenerator() Sequence Generator}' containment reference. + * + * + * @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; + } + } + + /** + * + * + * @generated + */ + @Override + protected EClass eStaticClass() { + return JpaJavaMappingsPackage.Literals.JAVA_ID; + } + + /** + * Returns the value of the 'Column' containment reference. + * + *

+ * If the meaning of the 'Column' containment reference isn't clear, + * there really should be more of a description here... + *

+ * + * @return the value of the 'Column' 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; + } + + /** + * + * + * @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 'Generated Value' containment reference. + * + *

+ * If the meaning of the 'Generated Value' reference isn't clear, + * there really should be more of a description here... + *

+ * + * @return the value of the 'Generated Value' 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; + } + + /** + * + * + * @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 Generated Value}' containment reference. + * + * + * @param value the new value of the 'Generated Value' 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 'Temporal' attribute. + * The literals are from the enumeration {@link org.eclipse.jpt.core.internal.mappings.TemporalType}. + * + *

+ * If the meaning of the 'Temporal' attribute isn't clear, + * there really should be more of a description here... + *

+ * + * @return the value of the 'Temporal' 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 Temporal}' attribute. + * + * + * @param value the new value of the 'Temporal' 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 'Table Generator' containment reference. + * + *

+ * If the meaning of the 'Table Generator' reference isn't clear, + * there really should be more of a description here... + *

+ * + * @return the value of the 'Table Generator' 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; + } + + /** + * + * + * @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 Table Generator}' containment reference. + * + * + * @param value the new value of the 'Table Generator' 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 'Sequence Generator' containment reference. + * + *

+ * If the meaning of the 'Sequence Generator' reference isn't clear, + * there really should be more of a description here... + *

+ * + * @return the value of the 'Sequence Generator' 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; + } + + /** + * + * + * @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 Sequence Generator}' containment reference. + * + * + * @param value the new value of the 'Sequence Generator' 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)); + } + + /** + * + * + * @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); + } + + /** + * + * + * @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); + } + + /** + * + * + * @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); + } + + /** + * + * + * @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); + } + + /** + * + * + * @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); + } + + /** + * + * + * @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); + } + + /** + * + * + * @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); + } + + /** + * + * + * @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; + +/** + * + * A representation of the model object 'Java Join Column'. + * + * + * + * @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() Referenced Column Name}' attribute. + * + * + * @see #getReferencedColumnName() + * @generated + * @ordered + */ + protected static final String REFERENCED_COLUMN_NAME_EDEFAULT = null; + + /** + * The default value of the '{@link #getSpecifiedReferencedColumnName() Specified Referenced Column Name}' attribute. + * + * + * @see #getSpecifiedReferencedColumnName() + * @generated + * @ordered + */ + protected static final String SPECIFIED_REFERENCED_COLUMN_NAME_EDEFAULT = null; + + /** + * The cached value of the '{@link #getSpecifiedReferencedColumnName() Specified Referenced Column Name}' attribute. + * + * + * @see #getSpecifiedReferencedColumnName() + * @generated + * @ordered + */ + protected String specifiedReferencedColumnName = SPECIFIED_REFERENCED_COLUMN_NAME_EDEFAULT; + + /** + * The default value of the '{@link #getDefaultReferencedColumnName() Default Referenced Column Name}' attribute. + * + * + * @see #getDefaultReferencedColumnName() + * @generated + * @ordered + */ + protected static final String DEFAULT_REFERENCED_COLUMN_NAME_EDEFAULT = null; + + /** + * The cached value of the '{@link #getDefaultReferencedColumnName() Default Referenced Column Name}' attribute. + * + * + * @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; + } + } + + /** + * + * + * @generated + */ + @Override + protected EClass eStaticClass() { + return JpaJavaMappingsPackage.Literals.JAVA_JOIN_COLUMN; + } + + /** + * Returns the value of the 'Referenced Column Name' attribute. + * + *

+ * If the meaning of the 'Referenced Column Name' attribute isn't clear, + * there really should be more of a description here... + *

+ * + * @return the value of the 'Referenced Column Name' 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 'Specified Referenced Column Name' attribute. + * + *

+ * If the meaning of the 'Specified Referenced Column Name' attribute isn't clear, + * there really should be more of a description here... + *

+ * + * @return the value of the 'Specified Referenced Column Name' 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 Specified Referenced Column Name}' attribute. + * + * + * @param value the new value of the 'Specified Referenced Column Name' 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 'Default Referenced Column Name' attribute. + * + *

+ * If the meaning of the 'Default Referenced Column Name' attribute isn't clear, + * there really should be more of a description here... + *

+ * + * @return the value of the 'Default Referenced Column Name' 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)); + } + + /** + * + * + * @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); + } + + /** + * + * + * @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); + } + + /** + * + * + * @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); + } + + /** + * + * + * @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); + } + + /** + * + * + * @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); + } + + /** + * + * + * @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); + } + + /** + * + * + * @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; + +/** + * + * A representation of the model object 'Java Join Table'. + * + * + * + * @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() Specified Join Columns}' containment reference list. + * + * + * @see #getSpecifiedJoinColumns() + * @generated + * @ordered + */ + protected EList specifiedJoinColumns; + + /** + * The cached value of the '{@link #getDefaultJoinColumns() Default Join Columns}' containment reference list. + * + * + * @see #getDefaultJoinColumns() + * @generated + * @ordered + */ + protected EList defaultJoinColumns; + + /** + * The cached value of the '{@link #getSpecifiedInverseJoinColumns() Specified Inverse Join Columns}' containment reference list. + * + * + * @see #getSpecifiedInverseJoinColumns() + * @generated + * @ordered + */ + protected EList specifiedInverseJoinColumns; + + /** + * The cached value of the '{@link #getDefaultInverseJoinColumns() Default Inverse Join Columns}' containment reference list. + * + * + * @see #getDefaultInverseJoinColumns() + * @generated + * @ordered + */ + protected EList 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) 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; + } + } + + 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) 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) notification.getOldValue()); + } + else { + // Notification.getNewValue() returns an array of the positions of objects that were removed + specifiedInverseJoinColumnsRemoved((int[]) notification.getNewValue(), (List) 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; + } + } + + /** + * + * + * @generated + */ + @Override + protected EClass eStaticClass() { + return JpaJavaMappingsPackage.Literals.JAVA_JOIN_TABLE; + } + + public EList getJoinColumns() { + return this.getSpecifiedJoinColumns().isEmpty() ? this.getDefaultJoinColumns() : this.getSpecifiedJoinColumns(); + } + + /** + * Returns the value of the 'Specified Join Columns' containment reference list. + * The list contents are of type {@link org.eclipse.jpt.core.internal.mappings.IJoinColumn}. + * + *

+ * If the meaning of the 'Specified Join Columns' containment reference list isn't clear, + * there really should be more of a description here... + *

+ * + * @return the value of the 'Specified Join Columns' 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 getSpecifiedJoinColumns() { + if (specifiedJoinColumns == null) { + specifiedJoinColumns = new EObjectContainmentEList(IJoinColumn.class, this, JpaJavaMappingsPackage.JAVA_JOIN_TABLE__SPECIFIED_JOIN_COLUMNS); + } + return specifiedJoinColumns; + } + + /** + * Returns the value of the 'Default Join Columns' containment reference list. + * The list contents are of type {@link org.eclipse.jpt.core.internal.mappings.IJoinColumn}. + * + *

+ * If the meaning of the 'Default Join Columns' containment reference list isn't clear, + * there really should be more of a description here... + *

+ * + * @return the value of the 'Default Join Columns' 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 getDefaultJoinColumns() { + if (defaultJoinColumns == null) { + defaultJoinColumns = new EObjectContainmentEList(IJoinColumn.class, this, JpaJavaMappingsPackage.JAVA_JOIN_TABLE__DEFAULT_JOIN_COLUMNS); + } + return defaultJoinColumns; + } + + public EList getInverseJoinColumns() { + return this.getSpecifiedInverseJoinColumns().isEmpty() ? this.getDefaultInverseJoinColumns() : this.getSpecifiedInverseJoinColumns(); + } + + /** + * Returns the value of the 'Specified Inverse Join Columns' containment reference list. + * The list contents are of type {@link org.eclipse.jpt.core.internal.mappings.IJoinColumn}. + * + *

+ * If the meaning of the 'Specified Inverse Join Columns' containment reference list isn't clear, + * there really should be more of a description here... + *

+ * + * @return the value of the 'Specified Inverse Join Columns' 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 getSpecifiedInverseJoinColumns() { + if (specifiedInverseJoinColumns == null) { + specifiedInverseJoinColumns = new EObjectContainmentEList(IJoinColumn.class, this, JpaJavaMappingsPackage.JAVA_JOIN_TABLE__SPECIFIED_INVERSE_JOIN_COLUMNS); + } + return specifiedInverseJoinColumns; + } + + /** + * Returns the value of the 'Default Inverse Join Columns' containment reference list. + * The list contents are of type {@link org.eclipse.jpt.core.internal.mappings.IJoinColumn}. + * + *

+ * If the meaning of the 'Default Inverse Join Columns' containment reference list isn't clear, + * there really should be more of a description here... + *

+ * + * @return the value of the 'Default Inverse Join Columns' 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 getDefaultInverseJoinColumns() { + if (defaultInverseJoinColumns == null) { + defaultInverseJoinColumns = new EObjectContainmentEList(IJoinColumn.class, this, JpaJavaMappingsPackage.JAVA_JOIN_TABLE__DEFAULT_INVERSE_JOIN_COLUMNS); + } + return defaultInverseJoinColumns; + } + + /** + * + * + * @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); + } + + /** + * + * + * @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); + } + + /** + * + * + * @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) newValue); + return; + case JpaJavaMappingsPackage.JAVA_JOIN_TABLE__DEFAULT_JOIN_COLUMNS : + getDefaultJoinColumns().clear(); + getDefaultJoinColumns().addAll((Collection) newValue); + return; + case JpaJavaMappingsPackage.JAVA_JOIN_TABLE__SPECIFIED_INVERSE_JOIN_COLUMNS : + getSpecifiedInverseJoinColumns().clear(); + getSpecifiedInverseJoinColumns().addAll((Collection) newValue); + return; + case JpaJavaMappingsPackage.JAVA_JOIN_TABLE__DEFAULT_INVERSE_JOIN_COLUMNS : + getDefaultInverseJoinColumns().clear(); + getDefaultInverseJoinColumns().addAll((Collection) newValue); + return; + } + super.eSet(featureID, newValue); + } + + /** + * + * + * @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); + } + + /** + * + * + * @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); + } + + /** + * + * + * @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); + } + + /** + * + * + * @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 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 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 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 joinColumns) { + for (IJoinColumn joinColumn : joinColumns) { + ((JavaJoinColumn) joinColumn).removeAnnotation(); + } + this.synchJoinColumnAnnotationsAfterRemove(indexes[0]); + } + + public void specifiedJoinColumnsCleared(List 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 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 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 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 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 inverseJoinColumns) { + for (IJoinColumn inverseJoinColumn : inverseJoinColumns) { + ((JavaJoinColumn) inverseJoinColumn).removeAnnotation(); + } + this.synchInverseJoinColumnAnnotationsAfterRemove(indexes[0]); + } + + public void specifiedInverseJoinColumnsCleared(List 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 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 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 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; + +/** + * + * A representation of the model object 'Java Many To Many'. + * + * + * + * @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); + } + + /** + * + * + * @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; + +/** + * + * A representation of the model object 'Java Many To One'. + * + * + * + * @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; + } + + /** + * + * + * @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; + +/** + * + * A representation of the model object 'Java Mapped Superclass'. + * + * + * + * @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); + + /** + * + * + * @generated + */ + protected JavaMappedSuperclass() { + super(); + } + + protected JavaMappedSuperclass(Type type) { + super(type); + } + + @Override + public DeclarationAnnotationAdapter declarationAnnotationAdapter() { + return ANNOTATION_ADAPTER; + } + + /** + * + * + * @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 associatedTableNamesIncludingInherited() { + return EmptyIterator.instance(); + } + + public Iterator associatedTables() { + return EmptyIterator.instance(); + } + + public Iterator associatedTablesIncludingInherited() { + return EmptyIterator.instance(); + } + + public Iterator overridableAttributeNames() { + return new TransformationIterator(new FilteringIterator(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 overridableAssociationNames() { + return new TransformationIterator(new FilteringIterator(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 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; + +/** + * + * A representation of the model object 'Java Multi Relationship Mapping'. + * + * + * + * @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() Mapped By}' attribute. + * + * + * @see #getMappedBy() + * @generated + * @ordered + */ + protected static final String MAPPED_BY_EDEFAULT = null; + + /** + * The cached value of the '{@link #getMappedBy() Mapped By}' attribute. + * + * + * @see #getMappedBy() + * @generated + * @ordered + */ + protected String mappedBy = MAPPED_BY_EDEFAULT; + + private final AnnotationElementAdapter mappedByAdapter; + + /** + * The default value of the '{@link #getFetch() Fetch}' attribute. + * + * + * @see #getFetch() + * @generated + * @ordered + */ + protected static final DefaultLazyFetchType FETCH_EDEFAULT = DefaultLazyFetchType.DEFAULT; + + /** + * The cached value of the '{@link #getFetch() Fetch}' attribute. + * + * + * @see #getFetch() + * @generated + * @ordered + */ + protected DefaultLazyFetchType fetch = FETCH_EDEFAULT; + + /** + * The cached value of the '{@link #getJoinTable() Join Table}' containment reference. + * + * + * @see #getJoinTable() + * @generated + * @ordered + */ + protected IJoinTable joinTable; + + /** + * The cached value of the '{@link #getOrderBy() Order By}' containment reference. + * + * + * @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(); + + /** + * + * + * @generated + */ + @Override + protected EClass eStaticClass() { + return JpaJavaMappingsPackage.Literals.JAVA_MULTI_RELATIONSHIP_MAPPING; + } + + /** + * Returns the value of the 'Mapped By' attribute. + * + *

+ * If the meaning of the 'Mapped By' attribute isn't clear, + * there really should be more of a description here... + *

+ * + * @return the value of the 'Mapped By' 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 Mapped By}' attribute. + * + * + * @param value the new value of the 'Mapped By' 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 'Fetch' attribute. + * The literals are from the enumeration {@link org.eclipse.jpt.core.internal.mappings.DefaultLazyFetchType}. + * + *

+ * If the meaning of the 'Fetch' attribute isn't clear, + * there really should be more of a description here... + *

+ * + * @return the value of the 'Fetch' 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 Fetch}' attribute. + * + * + * @param value the new value of the 'Fetch' 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 'Join Table' containment reference. + * + *

+ * If the meaning of the 'Join Table' containment reference isn't clear, + * there really should be more of a description here... + *

+ * + * @return the value of the 'Join Table' 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; + } + + /** + * + * + * @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 'Order By' containment reference. + * + *

+ * If the meaning of the 'Order By' reference isn't clear, + * there really should be more of a description here... + *

+ * + * @return the value of the 'Order By' 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; + } + + /** + * + * + * @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; + } + + /** + * + * + * @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); + } + + /** + * + * + * @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); + } + + /** + * + * + * @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); + } + + /** + * + * + * @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); + } + + /** + * + * + * @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); + } + + /** + * + * + * @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); + } + + /** + * + * + * @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); + } + + /** + * + * + * @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; + +/** + * + * A representation of the model object 'Java Named Column'. + * + * + * + * @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() Name}' attribute. + * + * + * @see #getName() + * @generated + * @ordered + */ + protected static final String NAME_EDEFAULT = null; + + /** + * The default value of the '{@link #getSpecifiedName() Specified Name}' attribute. + * + * + * @see #getSpecifiedName() + * @generated + * @ordered + */ + protected static final String SPECIFIED_NAME_EDEFAULT = null; + + /** + * The cached value of the '{@link #getSpecifiedName() Specified Name}' attribute. + * + * + * @see #getSpecifiedName() + * @generated + * @ordered + */ + protected String specifiedName = SPECIFIED_NAME_EDEFAULT; + + /** + * The default value of the '{@link #getDefaultName() Default Name}' attribute. + * + * + * @see #getDefaultName() + * @generated + * @ordered + */ + protected static final String DEFAULT_NAME_EDEFAULT = null; + + /** + * The cached value of the '{@link #getDefaultName() Default Name}' attribute. + * + * + * @see #getDefaultName() + * @generated + * @ordered + */ + protected String defaultName = DEFAULT_NAME_EDEFAULT; + + /** + * The default value of the '{@link #getColumnDefinition() Column Definition}' attribute. + * + * + * @see #getColumnDefinition() + * @generated + * @ordered + */ + protected static final String COLUMN_DEFINITION_EDEFAULT = null; + + /** + * The cached value of the '{@link #getColumnDefinition() Column Definition}' attribute. + * + * + * @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; + } + } + + /** + * + * + * @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 'Specified Name' attribute. + * + *

+ * If the meaning of the 'Specified Name' attribute isn't clear, + * there really should be more of a description here... + *

+ * + * @return the value of the 'Specified Name' 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 Specified Name}' attribute. + * + * + * @param value the new value of the 'Specified Name' 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 'Default Name' attribute. + * + *

+ * If the meaning of the 'Default Name' attribute isn't clear, + * there really should be more of a description here... + *

+ * + * @return the value of the 'Default Name' 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 'Column Definition' attribute. + * + *

+ * If the meaning of the 'Column Definition' attribute isn't clear, + * there really should be more of a description here... + *

+ * + * @return the value of the 'Column Definition' 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 Column Definition}' attribute. + * + * + * @param value the new value of the 'Column Definition' 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)); + } + + /** + * + * + * @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); + } + + /** + * + * + * @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); + } + + /** + * + * + * @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); + } + + /** + * + * + * @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); + } + + /** + * + * + * @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); + } + + /** + * + * + * @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); + } + + /** + * + * + * @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; + +/** + * + * A representation of the model object 'Java Named Native Query'. + * + * + * + * @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() Result Class}' attribute. + * + * + * @see #getResultClass() + * @generated + * @ordered + */ + protected static final String RESULT_CLASS_EDEFAULT = null; + + /** + * The cached value of the '{@link #getResultClass() Result Class}' attribute. + * + * + * @see #getResultClass() + * @generated + * @ordered + */ + protected String resultClass = RESULT_CLASS_EDEFAULT; + + /** + * The default value of the '{@link #getResultSetMapping() Result Set Mapping}' attribute. + * + * + * @see #getResultSetMapping() + * @generated + * @ordered + */ + protected static final String RESULT_SET_MAPPING_EDEFAULT = null; + + /** + * The cached value of the '{@link #getResultSetMapping() Result Set Mapping}' attribute. + * + * + * @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; + } + } + + /** + * + * + * @generated + */ + @Override + protected EClass eStaticClass() { + return JpaJavaMappingsPackage.Literals.JAVA_NAMED_NATIVE_QUERY; + } + + /** + * Returns the value of the 'Result Class' attribute. + * + *

+ * If the meaning of the 'Result Class' attribute isn't clear, + * there really should be more of a description here... + *

+ * + * @return the value of the 'Result Class' 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 Result Class}' attribute. + * + * + * @param value the new value of the 'Result Class' 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 'Result Set Mapping' attribute. + * + *

+ * If the meaning of the 'Result Set Mapping' attribute isn't clear, + * there really should be more of a description here... + *

+ * + * @return the value of the 'Result Set Mapping' 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 Result Set Mapping}' attribute. + * + * + * @param value the new value of the 'Result Set Mapping' 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)); + } + + /** + * + * + * @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); + } + + /** + * + * + * @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); + } + + /** + * + * + * @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); + } + + /** + * + * + * @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); + } + + /** + * + * + * @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); + } + + /** + * + * + * @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); + } + + /** + * + * + * @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; + +/** + * + * A representation of the model object 'Java Named Query'. + * + * + * + * @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; + } + + /** + * + * + * @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; + +/** + * + * A representation of the model object 'Java Null Attribute Mapping'. + * + * + * + * @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; + } + + /** + * + * + * @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; + +/** + * + * A representation of the model object 'Java Null Type Mapping'. + * + * + * + * @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(); + + /** + * + * + * @generated + */ + protected JavaNullTypeMapping() { + super(); + } + + protected JavaNullTypeMapping(Type type) { + super(type); + } + + @Override + public DeclarationAnnotationAdapter declarationAnnotationAdapter() { + return ANNOTATION_ADAPTER; + } + + /** + * + * + * @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 associatedTableNamesIncludingInherited() { + return EmptyIterator.instance(); + } + + public Iterator associatedTables() { + return EmptyIterator.instance(); + } + + public Iterator associatedTablesIncludingInherited() { + return EmptyIterator.instance(); + } + + public Iterator overridableAssociationNames() { + return EmptyIterator.instance(); + } + + public Iterator overridableAttributeNames() { + return EmptyIterator.instance(); + } + + public List 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; + +/** + * + * A representation of the model object 'Java One To Many'. + * + * + * + * @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); + } + + /** + * + * + * @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; + +/** + * + * A representation of the model object 'Java One To One'. + * + * + * + * @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() Mapped By}' attribute. + * + * + * @see #getMappedBy() + * @generated + * @ordered + */ + protected static final String MAPPED_BY_EDEFAULT = null; + + /** + * The cached value of the '{@link #getMappedBy() Mapped By}' attribute. + * + * + * @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; + } + + /** + * + * + * @generated + */ + @Override + protected EClass eStaticClass() { + return JpaJavaMappingsPackage.Literals.JAVA_ONE_TO_ONE; + } + + /** + * Returns the value of the 'Mapped By' attribute. + * + *

+ * If the meaning of the 'Mapped By' attribute isn't clear, + * there really should be more of a description here... + *

+ * + * @return the value of the 'Mapped By' 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 Mapped By}' attribute. + * + * + * @param value the new value of the 'Mapped By' 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)); + } + + /** + * + * + * @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); + } + + /** + * + * + * @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); + } + + /** + * + * + * @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); + } + + /** + * + * + * @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); + } + + /** + * + * + * @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); + } + + /** + * + * + * @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); + } + + /** + * + * + * @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; + +/** + * + * A representation of the model object 'Java Order By'. + * + * + * + * @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() Value}' attribute. + * + * + * @see #getValue() + * @generated + * @ordered + */ + protected static final String VALUE_EDEFAULT = null; + + /** + * The cached value of the '{@link #getValue() Value}' attribute. + * + * + * @see #getValue() + * @generated + * @ordered + */ + protected String value = VALUE_EDEFAULT; + + /** + * The default value of the '{@link #getType() Type}' attribute. + * + * + * @see #getType() + * @generated + * @ordered + */ + protected static final OrderingType TYPE_EDEFAULT = OrderingType.NONE; + + /** + * The cached value of the '{@link #getType() Type}' attribute. + * + * + * @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; + } + } + + /** + * + * + * @generated + */ + @Override + protected EClass eStaticClass() { + return JpaJavaMappingsPackage.Literals.JAVA_ORDER_BY; + } + + /** + * Returns the value of the 'Value' attribute. + * + *

+ * If the meaning of the 'Value' attribute isn't clear, + * there really should be more of a description here... + *

+ * + * @return the value of the 'Value' 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 Value}' attribute. + * + * + * @param value the new value of the 'Value' 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 'Type' attribute. + * The literals are from the enumeration {@link org.eclipse.jpt.core.internal.mappings.OrderingType}. + * + *

+ * If the meaning of the 'Type' attribute isn't clear, + * there really should be more of a description here... + *

+ * + * @return the value of the 'Type' 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 Type}' attribute. + * + * + * @param value the new value of the 'Type' 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)); + } + + /** + * + * + * @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); + } + + /** + * + * + * @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); + } + + /** + * + * + * @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); + } + + /** + * + * + * @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); + } + + /** + * + * + * @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); + } + + /** + * + * + * @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); + } + + /** + * + * + * @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; + +/** + * + * A representation of the model object 'Java Override'. + * + * + * + * @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() Name}' attribute. + * + * + * @see #getName() + * @generated + * @ordered + */ + protected static final String NAME_EDEFAULT = null; + + /** + * The cached value of the '{@link #getName() Name}' attribute. + * + * + * @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)); + } + + /** + * + * + * @generated + */ + @Override + protected EClass eStaticClass() { + return JpaJavaMappingsPackage.Literals.JAVA_OVERRIDE; + } + + /** + * Returns the value of the 'Name' attribute. + * + *

+ * If the meaning of the 'Name' attribute isn't clear, + * there really should be more of a description here... + *

+ * + * @return the value of the 'Name' 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 Name}' attribute. + * + * + * @param value the new value of the 'Name' 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); + } + + /** + * + * + * @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); + } + + /** + * + * + * @generated + */ + @Override + public void eSet(int featureID, Object newValue) { + switch (featureID) { + case JpaJavaMappingsPackage.JAVA_OVERRIDE__NAME : + setName((String) newValue); + return; + } + super.eSet(featureID, newValue); + } + + /** + * + * + * @generated + */ + @Override + public void eUnset(int featureID) { + switch (featureID) { + case JpaJavaMappingsPackage.JAVA_OVERRIDE__NAME : + setName(NAME_EDEFAULT); + return; + } + super.eUnset(featureID); + } + + /** + * + * + * @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); + } + + /** + * + * + * @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); + } + + /** + * + * + * @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); + } + + /** + * + * + * @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; + +/** + * + * A representation of the model object 'Java Primary Key Join Column'. + * + * + * + * @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() Name}' attribute. + * + * + * @see #getName() + * @generated + * @ordered + */ + protected static final String NAME_EDEFAULT = null; + + /** + * The default value of the '{@link #getSpecifiedName() Specified Name}' attribute. + * + * + * @see #getSpecifiedName() + * @generated + * @ordered + */ + protected static final String SPECIFIED_NAME_EDEFAULT = null; + + /** + * The cached value of the '{@link #getSpecifiedName() Specified Name}' attribute. + * + * + * @see #getSpecifiedName() + * @generated + * @ordered + */ + protected String specifiedName = SPECIFIED_NAME_EDEFAULT; + + /** + * The default value of the '{@link #getDefaultName() Default Name}' attribute. + * + * + * @see #getDefaultName() + * @generated + * @ordered + */ + protected static final String DEFAULT_NAME_EDEFAULT = null; + + /** + * The cached value of the '{@link #getDefaultName() Default Name}' attribute. + * + * + * @see #getDefaultName() + * @generated + * @ordered + */ + protected String defaultName = DEFAULT_NAME_EDEFAULT; + + /** + * The default value of the '{@link #getColumnDefinition() Column Definition}' attribute. + * + * + * @see #getColumnDefinition() + * @generated + * @ordered + */ + protected static final String COLUMN_DEFINITION_EDEFAULT = null; + + /** + * The cached value of the '{@link #getColumnDefinition() Column Definition}' attribute. + * + * + * @see #getColumnDefinition() + * @generated + * @ordered + */ + protected String columnDefinition = COLUMN_DEFINITION_EDEFAULT; + + /** + * The default value of the '{@link #getReferencedColumnName() Referenced Column Name}' attribute. + * + * + * @see #getReferencedColumnName() + * @generated + * @ordered + */ + protected static final String REFERENCED_COLUMN_NAME_EDEFAULT = null; + + /** + * The default value of the '{@link #getSpecifiedReferencedColumnName() Specified Referenced Column Name}' attribute. + * + * + * @see #getSpecifiedReferencedColumnName() + * @generated + * @ordered + */ + protected static final String SPECIFIED_REFERENCED_COLUMN_NAME_EDEFAULT = null; + + /** + * The cached value of the '{@link #getSpecifiedReferencedColumnName() Specified Referenced Column Name}' attribute. + * + * + * @see #getSpecifiedReferencedColumnName() + * @generated + * @ordered + */ + protected String specifiedReferencedColumnName = SPECIFIED_REFERENCED_COLUMN_NAME_EDEFAULT; + + /** + * The default value of the '{@link #getDefaultReferencedColumnName() Default Referenced Column Name}' attribute. + * + * + * @see #getDefaultReferencedColumnName() + * @generated + * @ordered + */ + protected static final String DEFAULT_REFERENCED_COLUMN_NAME_EDEFAULT = null; + + /** + * The cached value of the '{@link #getDefaultReferencedColumnName() Default Referenced Column Name}' attribute. + * + * + * @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); + } + + /** + * + * + * @generated + */ + @Override + protected EClass eStaticClass() { + return JpaJavaMappingsPackage.Literals.JAVA_PRIMARY_KEY_JOIN_COLUMN; + } + + /** + * Returns the value of the 'Name' attribute. + * + *

+ * If the meaning of the 'Name' attribute isn't clear, + * there really should be more of a description here... + *

+ * + * @return the value of the 'Name' 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 'Specified Name' attribute. + * + *

+ * If the meaning of the 'Specified Name' attribute isn't clear, + * there really should be more of a description here... + *

+ * + * @return the value of the 'Specified Name' 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 Specified Name}' attribute. + * + * + * @param value the new value of the 'Specified Name' 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 'Default Name' attribute. + * + *

+ * If the meaning of the 'Default Name' attribute isn't clear, + * there really should be more of a description here... + *

+ * + * @return the value of the 'Default Name' 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 'Referenced Column Name' attribute. + * + *

+ * If the meaning of the 'Referenced Column Name' attribute isn't clear, + * there really should be more of a description here... + *

+ * + * @return the value of the 'Referenced Column Name' 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 'Specified Referenced Column Name' attribute. + * + *

+ * If the meaning of the 'Specified Referenced Column Name' attribute isn't clear, + * there really should be more of a description here... + *

+ * + * @return the value of the 'Specified Referenced Column Name' 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 Specified Referenced Column Name}' attribute. + * + * + * @param value the new value of the 'Specified Referenced Column Name' 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 'Default Referenced Column Name' attribute. + * + *

+ * If the meaning of the 'Default Referenced Column Name' attribute isn't clear, + * there really should be more of a description here... + *

+ * + * @return the value of the 'Default Referenced Column Name' 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 'Column Definition' attribute. + * + *

+ * If the meaning of the 'Column Definition' attribute isn't clear, + * there really should be more of a description here... + *

+ * + * @return the value of the 'Column Definition' 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 Column Definition}' attribute. + * + * + * @param value the new value of the 'Column Definition' 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); + } + + /** + * + * + * @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); + } + + /** + * + * + * @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); + } + + /** + * + * + * @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); + } + + /** + * + * + * @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); + } + + /** + * + * + * @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); + } + + /** + * + * + * @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); + } + + /** + * + * + * @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; + +/** + * + * A representation of the model object 'Java Query Hint'. + * + * + * + * @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() Name}' attribute. + * + * + * @see #getName() + * @generated + * @ordered + */ + protected static final String NAME_EDEFAULT = null; + + /** + * The cached value of the '{@link #getName() Name}' attribute. + * + * + * @see #getName() + * @generated + * @ordered + */ + protected String name = NAME_EDEFAULT; + + /** + * The default value of the '{@link #getValue() Value}' attribute. + * + * + * @see #getValue() + * @generated + * @ordered + */ + protected static final String VALUE_EDEFAULT = null; + + /** + * The cached value of the '{@link #getValue() Value}' attribute. + * + * + * @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; + } + } + + /** + * + * + * @generated + */ + @Override + protected EClass eStaticClass() { + return JpaJavaMappingsPackage.Literals.JAVA_QUERY_HINT; + } + + /** + * Returns the value of the 'Name' attribute. + * + *

+ * If the meaning of the 'Name' attribute isn't clear, + * there really should be more of a description here... + *

+ * + * @return the value of the 'Name' 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 Name}' attribute. + * + * + * @param value the new value of the 'Name' 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 'Value' attribute. + * + *

+ * If the meaning of the 'Value' attribute isn't clear, + * there really should be more of a description here... + *

+ * + * @return the value of the 'Value' 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 Value}' attribute. + * + * + * @param value the new value of the 'Value' 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)); + } + + /** + * + * + * @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); + } + + /** + * + * + * @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); + } + + /** + * + * + * @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); + } + + /** + * + * + * @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); + } + + /** + * + * + * @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); + } + + /** + * + * + * @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); + } + + /** + * + * + * @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; + +/** + * + * A representation of the model object 'Java Relationship Mapping'. + * + * + * + * @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() Target Entity}' attribute. + * + * + * @see #getTargetEntity() + * @generated + * @ordered + */ + protected static final String TARGET_ENTITY_EDEFAULT = null; + + /** + * The default value of the '{@link #getSpecifiedTargetEntity() Specified Target Entity}' attribute. + * + * + * @see #getSpecifiedTargetEntity() + * @generated + * @ordered + */ + protected static final String SPECIFIED_TARGET_ENTITY_EDEFAULT = null; + + /** + * The cached value of the '{@link #getSpecifiedTargetEntity() Specified Target Entity}' attribute. + * + * + * @see #getSpecifiedTargetEntity() + * @generated + * @ordered + */ + protected String specifiedTargetEntity = SPECIFIED_TARGET_ENTITY_EDEFAULT; + + /** + * The default value of the '{@link #getDefaultTargetEntity() Default Target Entity}' attribute. + * + * + * @see #getDefaultTargetEntity() + * @generated + * @ordered + */ + protected static final String DEFAULT_TARGET_ENTITY_EDEFAULT = null; + + /** + * The cached value of the '{@link #getDefaultTargetEntity() Default Target Entity}' attribute. + * + * + * @see #getDefaultTargetEntity() + * @generated + * @ordered + */ + protected String defaultTargetEntity = DEFAULT_TARGET_ENTITY_EDEFAULT; + + /** + * The cached value of the '{@link #getResolvedTargetEntity() Resolved Target Entity}' reference. + * + * + * @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(); + + /** + * + * + * @generated + */ + @Override + protected EClass eStaticClass() { + return JpaJavaMappingsPackage.Literals.JAVA_RELATIONSHIP_MAPPING; + } + + /** + * Returns the value of the 'Target Entity' attribute. + * + *

+ * If the meaning of the 'Target Entity' attribute isn't clear, + * there really should be more of a description here... + *

+ * + * @return the value of the 'Target Entity' 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 'Specified Target Entity' attribute. + * + *

+ * If the meaning of the 'Specified Target Entity' attribute isn't clear, + * there really should be more of a description here... + *

+ * + * @return the value of the 'Specified Target Entity' 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 Specified Target Entity}' attribute. + * + * + * @param value the new value of the 'Specified Target Entity' 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 'Default Target Entity' attribute. + * + *

+ * If the meaning of the 'Default Target Entity' attribute isn't clear, + * there really should be more of a description here... + *

+ * + * @return the value of the 'Default Target Entity' 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 'Resolved Target Entity' reference. + * + *

+ * If the meaning of the 'Resolved Target Entity' reference isn't clear, + * there really should be more of a description here... + *

+ * + * @return the value of the 'Resolved Target Entity' 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; + } + + /** + * + * + * @generated + */ + public IEntity basicGetResolvedTargetEntity() { + return resolvedTargetEntity; + } + + /** + * Sets the value of the '{@link org.eclipse.jpt.core.internal.content.java.mappings.JavaRelationshipMapping#getResolvedTargetEntity Resolved Target Entity}' reference. + * + * + * @param value the new value of the 'Resolved Target Entity' 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)); + } + + /** + * + * + * @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); + } + + /** + * + * + * @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); + } + + /** + * + * + * @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); + } + + /** + * + * + * @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); + } + + /** + * + * + * @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); + } + + /** + * + * + * @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); + } + + /** + * + * + * @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 possibleMappedByAttributeNames() { + IEntity targetEntity = getResolvedTargetEntity(); + if (targetEntity == null) { + return EmptyIterator.instance(); + } + return new TransformationIterator(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; + +/** + * + * A representation of the model object 'Java Secondary Table'. + * + * + * + * @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); + } + + /** + * + * + * @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; + +/** + * + * A representation of the model object 'Java Sequence Generator'. + * + * + * + * @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() Sequence Name}' attribute. + * + * + * @see #getSequenceName() + * @generated + * @ordered + */ + protected static final String SEQUENCE_NAME_EDEFAULT = null; + + /** + * The default value of the '{@link #getSpecifiedSequenceName() Specified Sequence Name}' attribute. + * + * + * @see #getSpecifiedSequenceName() + * @generated + * @ordered + */ + protected static final String SPECIFIED_SEQUENCE_NAME_EDEFAULT = null; + + /** + * The cached value of the '{@link #getSpecifiedSequenceName() Specified Sequence Name}' attribute. + * + * + * @see #getSpecifiedSequenceName() + * @generated + * @ordered + */ + protected String specifiedSequenceName = SPECIFIED_SEQUENCE_NAME_EDEFAULT; + + /** + * The default value of the '{@link #getDefaultSequenceName() Default Sequence Name}' attribute. + * + * + * @see #getDefaultSequenceName() + * @generated + * @ordered + */ + protected static final String DEFAULT_SEQUENCE_NAME_EDEFAULT = null; + + /** + * The cached value of the '{@link #getDefaultSequenceName() Default Sequence Name}' attribute. + * + * + * @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; + } + + /** + * + * + * @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 'Specified Sequence Name' attribute. + * + *

+ * If the meaning of the 'Specified Sequence Name' attribute isn't clear, + * there really should be more of a description here... + *

+ * + * @return the value of the 'Specified Sequence Name' 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 Specified Sequence Name}' attribute. + * + * + * @param value the new value of the 'Specified Sequence Name' 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 'Default Sequence Name' attribute. + * + *

+ * If the meaning of the 'Default Sequence Name' attribute isn't clear, + * there really should be more of a description here... + *

+ * + * @return the value of the 'Default Sequence Name' attribute. + * @see org.eclipse.jpt.core.internal.content.java.mappings.JpaJavaMappingsPackage#getISequenceGenerator_DefaultSequenceName() + * @model changeable="false" + * @generated + */ + public String getDefaultSequenceName() { + return defaultSequenceName; + } + + /** + * + * + * @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); + } + + /** + * + * + * @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); + } + + /** + * + * + * @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); + } + + /** + * + * + * @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); + } + + /** + * + * + * @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); + } + + /** + * + * + * @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); + } + + /** + * + * + * @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; + +/** + * + * A representation of the model object 'Java Single Relationship Mapping'. + * + * + * + * @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() Fetch}' attribute. + * + * + * @see #getFetch() + * @generated + * @ordered + */ + protected static final DefaultEagerFetchType FETCH_EDEFAULT = DefaultEagerFetchType.DEFAULT; + + /** + * The cached value of the '{@link #getFetch() Fetch}' attribute. + * + * + * @see #getFetch() + * @generated + * @ordered + */ + protected DefaultEagerFetchType fetch = FETCH_EDEFAULT; + + /** + * The cached value of the '{@link #getSpecifiedJoinColumns() Specified Join Columns}' containment reference list. + * + * + * @see #getSpecifiedJoinColumns() + * @generated + * @ordered + */ + protected EList specifiedJoinColumns; + + /** + * The cached value of the '{@link #getDefaultJoinColumns() Default Join Columns}' containment reference list. + * + * + * @see #getDefaultJoinColumns() + * @generated + * @ordered + */ + protected EList 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(); + + /** + * + * + * @generated + */ + @Override + protected EClass eStaticClass() { + return JpaJavaMappingsPackage.Literals.JAVA_SINGLE_RELATIONSHIP_MAPPING; + } + + /** + * Returns the value of the 'Fetch' attribute. + * The literals are from the enumeration {@link org.eclipse.jpt.core.internal.mappings.DefaultEagerFetchType}. + * + *

+ * If the meaning of the 'Fetch' attribute isn't clear, + * there really should be more of a description here... + *

+ * + * @return the value of the 'Fetch' 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 Fetch}' attribute. + * + * + * @param value the new value of the 'Fetch' 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 'Join Columns' containment reference list. + * The list contents are of type {@link org.eclipse.jpt.core.internal.mappings.IJoinColumn}. + * + *

+ * If the meaning of the 'Join Columns' containment reference list isn't clear, + * there really should be more of a description here... + *

+ * + * @return the value of the 'Join Columns' 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 'Specified Join Columns' containment reference list. + * The list contents are of type {@link org.eclipse.jpt.core.internal.mappings.IJoinColumn}. + * + *

+ * If the meaning of the 'Specified Join Columns' containment reference list isn't clear, + * there really should be more of a description here... + *

+ * + * @return the value of the 'Specified Join Columns' 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 getSpecifiedJoinColumns() { + if (specifiedJoinColumns == null) { + specifiedJoinColumns = new EObjectContainmentEList(IJoinColumn.class, this, JpaJavaMappingsPackage.JAVA_SINGLE_RELATIONSHIP_MAPPING__SPECIFIED_JOIN_COLUMNS); + } + return specifiedJoinColumns; + } + + /** + * Returns the value of the 'Default Join Columns' containment reference list. + * The list contents are of type {@link org.eclipse.jpt.core.internal.mappings.IJoinColumn}. + * + *

+ * If the meaning of the 'Default Join Columns' containment reference list isn't clear, + * there really should be more of a description here... + *

+ * + * @return the value of the 'Default Join Columns' 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 getDefaultJoinColumns() { + if (defaultJoinColumns == null) { + defaultJoinColumns = new EObjectContainmentEList(IJoinColumn.class, this, JpaJavaMappingsPackage.JAVA_SINGLE_RELATIONSHIP_MAPPING__DEFAULT_JOIN_COLUMNS); + } + return defaultJoinColumns; + } + + /** + * + * + * @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); + } + + /** + * + * + * @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); + } + + /** + * + * + * @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) newValue); + return; + case JpaJavaMappingsPackage.JAVA_SINGLE_RELATIONSHIP_MAPPING__DEFAULT_JOIN_COLUMNS : + getDefaultJoinColumns().clear(); + getDefaultJoinColumns().addAll((Collection) newValue); + return; + } + super.eSet(featureID, newValue); + } + + /** + * + * + * @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); + } + + /** + * + * + * @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); + } + + /** + * + * + * @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); + } + + /** + * + * + * @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); + } + + /** + * + * + * @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; + +/** + * + * A representation of the model object 'Java Table'. + * + * + * + * @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; + } + + /** + * + * + * @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; + +/** + * + * A representation of the model object 'Java Table Generator'. + * + * + * + * @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() Table}' attribute. + * + * + * @see #getTable() + * @generated + * @ordered + */ + protected static final String TABLE_EDEFAULT = null; + + /** + * The default value of the '{@link #getSpecifiedTable() Specified Table}' attribute. + * + * + * @see #getSpecifiedTable() + * @generated + * @ordered + */ + protected static final String SPECIFIED_TABLE_EDEFAULT = null; + + /** + * The cached value of the '{@link #getSpecifiedTable() Specified Table}' attribute. + * + * + * @see #getSpecifiedTable() + * @generated + * @ordered + */ + protected String specifiedTable = SPECIFIED_TABLE_EDEFAULT; + + /** + * The default value of the '{@link #getDefaultTable() Default Table}' attribute. + * + * + * @see #getDefaultTable() + * @generated + * @ordered + */ + protected static final String DEFAULT_TABLE_EDEFAULT = null; + + /** + * The cached value of the '{@link #getDefaultTable() Default Table}' attribute. + * + * + * @see #getDefaultTable() + * @generated + * @ordered + */ + protected String defaultTable = DEFAULT_TABLE_EDEFAULT; + + /** + * The default value of the '{@link #getCatalog() Catalog}' attribute. + * + * + * @see #getCatalog() + * @generated + * @ordered + */ + protected static final String CATALOG_EDEFAULT = null; + + /** + * The default value of the '{@link #getSpecifiedCatalog() Specified Catalog}' attribute. + * + * + * @see #getSpecifiedCatalog() + * @generated + * @ordered + */ + protected static final String SPECIFIED_CATALOG_EDEFAULT = null; + + /** + * The cached value of the '{@link #getSpecifiedCatalog() Specified Catalog}' attribute. + * + * + * @see #getSpecifiedCatalog() + * @generated + * @ordered + */ + protected String specifiedCatalog = SPECIFIED_CATALOG_EDEFAULT; + + /** + * The default value of the '{@link #getDefaultCatalog() Default Catalog}' attribute. + * + * + * @see #getDefaultCatalog() + * @generated + * @ordered + */ + protected static final String DEFAULT_CATALOG_EDEFAULT = null; + + /** + * The cached value of the '{@link #getDefaultCatalog() Default Catalog}' attribute. + * + * + * @see #getDefaultCatalog() + * @generated + * @ordered + */ + protected String defaultCatalog = DEFAULT_CATALOG_EDEFAULT; + + /** + * The default value of the '{@link #getSchema() Schema}' attribute. + * + * + * @see #getSchema() + * @generated + * @ordered + */ + protected static final String SCHEMA_EDEFAULT = null; + + /** + * The default value of the '{@link #getSpecifiedSchema() Specified Schema}' attribute. + * + * + * @see #getSpecifiedSchema() + * @generated + * @ordered + */ + protected static final String SPECIFIED_SCHEMA_EDEFAULT = null; + + /** + * The cached value of the '{@link #getSpecifiedSchema() Specified Schema}' attribute. + * + * + * @see #getSpecifiedSchema() + * @generated + * @ordered + */ + protected String specifiedSchema = SPECIFIED_SCHEMA_EDEFAULT; + + /** + * The default value of the '{@link #getDefaultSchema() Default Schema}' attribute. + * + * + * @see #getDefaultSchema() + * @generated + * @ordered + */ + protected static final String DEFAULT_SCHEMA_EDEFAULT = null; + + /** + * The cached value of the '{@link #getDefaultSchema() Default Schema}' attribute. + * + * + * @see #getDefaultSchema() + * @generated + * @ordered + */ + protected String defaultSchema = DEFAULT_SCHEMA_EDEFAULT; + + /** + * The default value of the '{@link #getPkColumnName() Pk Column Name}' attribute. + * + * + * @see #getPkColumnName() + * @generated + * @ordered + */ + protected static final String PK_COLUMN_NAME_EDEFAULT = null; + + /** + * The default value of the '{@link #getSpecifiedPkColumnName() Specified Pk Column Name}' attribute. + * + * + * @see #getSpecifiedPkColumnName() + * @generated + * @ordered + */ + protected static final String SPECIFIED_PK_COLUMN_NAME_EDEFAULT = null; + + /** + * The cached value of the '{@link #getSpecifiedPkColumnName() Specified Pk Column Name}' attribute. + * + * + * @see #getSpecifiedPkColumnName() + * @generated + * @ordered + */ + protected String specifiedPkColumnName = SPECIFIED_PK_COLUMN_NAME_EDEFAULT; + + /** + * The default value of the '{@link #getDefaultPkColumnName() Default Pk Column Name}' attribute. + * + * + * @see #getDefaultPkColumnName() + * @generated + * @ordered + */ + protected static final String DEFAULT_PK_COLUMN_NAME_EDEFAULT = null; + + /** + * The cached value of the '{@link #getDefaultPkColumnName() Default Pk Column Name}' attribute. + * + * + * @see #getDefaultPkColumnName() + * @generated + * @ordered + */ + protected String defaultPkColumnName = DEFAULT_PK_COLUMN_NAME_EDEFAULT; + + /** + * The default value of the '{@link #getValueColumnName() Value Column Name}' attribute. + * + * + * @see #getValueColumnName() + * @generated + * @ordered + */ + protected static final String VALUE_COLUMN_NAME_EDEFAULT = null; + + /** + * The default value of the '{@link #getSpecifiedValueColumnName() Specified Value Column Name}' attribute. + * + * + * @see #getSpecifiedValueColumnName() + * @generated + * @ordered + */ + protected static final String SPECIFIED_VALUE_COLUMN_NAME_EDEFAULT = null; + + /** + * The cached value of the '{@link #getSpecifiedValueColumnName() Specified Value Column Name}' attribute. + * + * + * @see #getSpecifiedValueColumnName() + * @generated + * @ordered + */ + protected String specifiedValueColumnName = SPECIFIED_VALUE_COLUMN_NAME_EDEFAULT; + + /** + * The default value of the '{@link #getDefaultValueColumnName() Default Value Column Name}' attribute. + * + * + * @see #getDefaultValueColumnName() + * @generated + * @ordered + */ + protected static final String DEFAULT_VALUE_COLUMN_NAME_EDEFAULT = null; + + /** + * The cached value of the '{@link #getDefaultValueColumnName() Default Value Column Name}' attribute. + * + * + * @see #getDefaultValueColumnName() + * @generated + * @ordered + */ + protected String defaultValueColumnName = DEFAULT_VALUE_COLUMN_NAME_EDEFAULT; + + /** + * The default value of the '{@link #getPkColumnValue() Pk Column Value}' attribute. + * + * + * @see #getPkColumnValue() + * @generated + * @ordered + */ + protected static final String PK_COLUMN_VALUE_EDEFAULT = null; + + /** + * The default value of the '{@link #getSpecifiedPkColumnValue() Specified Pk Column Value}' attribute. + * + * + * @see #getSpecifiedPkColumnValue() + * @generated + * @ordered + */ + protected static final String SPECIFIED_PK_COLUMN_VALUE_EDEFAULT = null; + + /** + * The cached value of the '{@link #getSpecifiedPkColumnValue() Specified Pk Column Value}' attribute. + * + * + * @see #getSpecifiedPkColumnValue() + * @generated + * @ordered + */ + protected String specifiedPkColumnValue = SPECIFIED_PK_COLUMN_VALUE_EDEFAULT; + + /** + * The default value of the '{@link #getDefaultPkColumnValue() Default Pk Column Value}' attribute. + * + * + * @see #getDefaultPkColumnValue() + * @generated + * @ordered + */ + protected static final String DEFAULT_PK_COLUMN_VALUE_EDEFAULT = null; + + /** + * The cached value of the '{@link #getDefaultPkColumnValue() Default Pk Column Value}' attribute. + * + * + * @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; + } + + /** + * + * + * @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 'Specified Table' attribute. + * + *

+ * If the meaning of the 'Specified Table' attribute isn't clear, + * there really should be more of a description here... + *

+ * + * @return the value of the 'Specified Table' 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 Specified Table}' attribute. + * + * + * @param value the new value of the 'Specified Table' 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 'Default Table' attribute. + * + *

+ * If the meaning of the 'Default Table' attribute isn't clear, + * there really should be more of a description here... + *

+ * + * @return the value of the 'Default Table' 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 'Specified Catalog' attribute. + * + *

+ * If the meaning of the 'Specified Catalog' attribute isn't clear, + * there really should be more of a description here... + *

+ * + * @return the value of the 'Specified Catalog' 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 Specified Catalog}' attribute. + * + * + * @param value the new value of the 'Specified Catalog' 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 'Default Catalog' attribute. + * + *

+ * If the meaning of the 'Default Catalog' attribute isn't clear, + * there really should be more of a description here... + *

+ * + * @return the value of the 'Default Catalog' 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 'Specified Schema' attribute. + * + *

+ * If the meaning of the 'Specified Schema' attribute isn't clear, + * there really should be more of a description here... + *

+ * + * @return the value of the 'Specified Schema' 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 Specified Schema}' attribute. + * + * + * @param value the new value of the 'Specified Schema' 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 'Default Schema' attribute. + * + *

+ * If the meaning of the 'Default Schema' attribute isn't clear, + * there really should be more of a description here... + *

+ * + * @return the value of the 'Default Schema' 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 'Specified Pk Column Name' attribute. + * + *

+ * If the meaning of the 'Specified Pk Column Name' attribute isn't clear, + * there really should be more of a description here... + *

+ * + * @return the value of the 'Specified Pk Column Name' 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 Specified Pk Column Name}' attribute. + * + * + * @param value the new value of the 'Specified Pk Column Name' 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 'Default Pk Column Name' attribute. + * + *

+ * If the meaning of the 'Default Pk Column Name' attribute isn't clear, + * there really should be more of a description here... + *

+ * + * @return the value of the 'Default Pk Column Name' 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 'Specified Value Column Name' attribute. + * + *

+ * If the meaning of the 'Specified Value Column Name' attribute isn't clear, + * there really should be more of a description here... + *

+ * + * @return the value of the 'Specified Value Column Name' 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 Specified Value Column Name}' attribute. + * + * + * @param value the new value of the 'Specified Value Column Name' 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 'Default Value Column Name' attribute. + * + *

+ * If the meaning of the 'Default Value Column Name' attribute isn't clear, + * there really should be more of a description here... + *

+ * + * @return the value of the 'Default Value Column Name' 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 'Specified Pk Column Value' attribute. + * + *

+ * If the meaning of the 'Specified Pk Column Value' attribute isn't clear, + * there really should be more of a description here... + *

+ * + * @return the value of the 'Specified Pk Column Value' 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 Specified Pk Column Value}' attribute. + * + * + * @param value the new value of the 'Specified Pk Column Value' 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 'Default Pk Column Value' attribute. + * + *

+ * If the meaning of the 'Default Pk Column Value' attribute isn't clear, + * there really should be more of a description here... + *

+ * + * @return the value of the 'Default Pk Column Value' attribute. + * @see org.eclipse.jpt.core.internal.content.java.mappings.JpaJavaMappingsPackage#getITableGenerator_DefaultPkColumnValue() + * @model changeable="false" + * @generated + */ + public String getDefaultPkColumnValue() { + return defaultPkColumnValue; + } + + /** + * + * + * @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); + } + + /** + * + * + * @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); + } + + /** + * + * + * @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); + } + + /** + * + * + * @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); + } + + /** + * + * + * @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); + } + + /** + * + * + * @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); + } + + /** + * + * + * @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; + +/** + * + * A representation of the model object 'Java Transient'. + * + * + * + * @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); + } + + /** + * + * + * @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; + +/** + * + * A representation of the model object 'Java Type Mapping'. + * + * + * + * @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() Name}' attribute. + * + * + * @see #getName() + * @generated + * @ordered + */ + protected static final String NAME_EDEFAULT = null; + + /** + * The default value of the '{@link #getTableName() Table Name}' attribute. + * + * + * @see #getTableName() + * @generated + * @ordered + */ + protected static final String TABLE_NAME_EDEFAULT = null; + + private Type type; + + /** + * + * + * @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(); + + /** + * + * + * @generated + */ + @Override + protected EClass eStaticClass() { + return JpaJavaMappingsPackage.Literals.JAVA_TYPE_MAPPING; + } + + /** + * Returns the value of the 'Name' attribute. + * + *

+ * If the meaning of the 'Name' attribute isn't clear, + * there really should be more of a description here... + *

+ * + * @return the value of the 'Name' 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 'Table Name' attribute. + * + *

+ * If the meaning of the 'Table Name' attribute isn't clear, + * there really should be more of a description here... + *

+ * + * @return the value of the 'Table Name' 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(); + } + + /** + * + * + * @model + * @generated + */ + public void initialize() { + // TODO: implement this method + // Ensure that you remove @generated or mark it @generated NOT + throw new UnsupportedOperationException(); + } + + /** + * + * + * @model kind="operation" required="true" + * @generated NOT + */ + public IPersistentType getPersistentType() { + return (IPersistentType) eContainer(); + } + + /** + * + * + * @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); + } + + /** + * + * + * @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); + } + + /** + * + * + * @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); + } + + /** + * + * + * @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; + +/** + * + * A representation of the model object 'Java Version'. + * + * + * + * @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() Column}' containment reference. + * + * + * @see #getColumn() + * @generated + * @ordered + */ + protected IColumn column; + + /** + * The default value of the '{@link #getTemporal() Temporal}' attribute. + * + * + * @see #getTemporal() + * @generated + * @ordered + */ + protected static final TemporalType TEMPORAL_EDEFAULT = TemporalType.NULL; + + /** + * The cached value of the '{@link #getTemporal() Temporal}' attribute. + * + * + * @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); + } + + /** + * + * + * @generated + */ + @Override + protected EClass eStaticClass() { + return JpaJavaMappingsPackage.Literals.JAVA_VERSION; + } + + /** + * Returns the value of the 'Column' containment reference. + * + *

+ * If the meaning of the 'Column' containment reference isn't clear, + * there really should be more of a description here... + *

+ * + * @return the value of the 'Column' 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; + } + + /** + * + * + * @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 'Temporal' attribute. + * The literals are from the enumeration {@link org.eclipse.jpt.core.internal.mappings.TemporalType}. + * + *

+ * If the meaning of the 'Temporal' attribute isn't clear, + * there really should be more of a description here... + *

+ * + * @return the value of the 'Temporal' 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 Temporal}' attribute. + * + * + * @param value the new value of the 'Temporal' 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); + } + + /** + * + * + * @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); + } + + /** + * + * + * @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); + } + + /** + * + * + * @generated + */ + @Override + public void eSet(int featureID, Object newValue) { + switch (featureID) { + case JpaJavaMappingsPackage.JAVA_VERSION__TEMPORAL : + setTemporal((TemporalType) newValue); + return; + } + super.eSet(featureID, newValue); + } + + /** + * + * + * @generated + */ + @Override + public void eUnset(int featureID) { + switch (featureID) { + case JpaJavaMappingsPackage.JAVA_VERSION__TEMPORAL : + setTemporal(TEMPORAL_EDEFAULT); + return; + } + super.eUnset(featureID); + } + + /** + * + * + * @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); + } + + /** + * + * + * @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); + } + + /** + * + * + * @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); + } + + /** + * + * + * @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; + +/** + * + * The Factory for the model. + * It provides a create method for each non-abstract class of the model. + * + * @see org.eclipse.jpt.core.internal.content.java.mappings.JpaJavaMappingsPackage + * @generated + */ +public class JpaJavaMappingsFactory extends EFactoryImpl +{ + /** + * The singleton instance of the factory. + * + * + * @generated + */ + public static final JpaJavaMappingsFactory eINSTANCE = init(); + + /** + * Creates the default factory implementation. + * + * + * @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. + * + * + * @generated + */ + public JpaJavaMappingsFactory() { + super(); + } + + /** + * + * + * @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; + } + + /** + * + * + * @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; + } + + /** + * + * + * @generated NOT + */ + public JavaColumn createJavaColumn() { + throw new UnsupportedOperationException("Use createJavaColumn(Member ) instead"); + } + + public JavaOneToMany createJavaOneToMany() { + throw new UnsupportedOperationException("Use createJavaOneToMany(Attribute) instead"); + } + + /** + * + * + * @generated + */ + public JavaManyToMany createJavaManyToMany() { + JavaManyToMany javaManyToMany = new JavaManyToMany(); + return javaManyToMany; + } + + public JavaManyToMany createJavaManyToMany(Attribute attribute) { + JavaManyToMany javaManyToMany = new JavaManyToMany(attribute); + return javaManyToMany; + } + + /** + * + * + * @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; + } + + /** + * + * + * @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()); + } + + /** + * + * + * @generated NOT + */ + public JavaDiscriminatorColumn createJavaDiscriminatorColumn() { + throw new UnsupportedOperationException(); + } + + /** + * + * + * @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; + } + + /** + * + * + * @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; + } + + /** + * + * + * @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; + } + + /** + * + * + * @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; + +/** + * + * The Package for the model. + * It contains accessors for the meta objects to represent + *
    + *
  • each class,
  • + *
  • each feature of each class,
  • + *
  • each enum,
  • + *
  • and each data type
  • + *
+ * + * @see org.eclipse.jpt.core.internal.content.java.mappings.JpaJavaMappingsFactory + * @model kind="package" + * @generated + */ +public class JpaJavaMappingsPackage extends EPackageImpl +{ + /** + * The package name. + * + * + * @generated + */ + public static final String eNAME = "mappings"; + + /** + * The package namespace URI. + * + * + * @generated + */ + public static final String eNS_URI = "jpt.core.java.mappings.xmi"; + + /** + * The package namespace name. + * + * + * @generated + */ + public static final String eNS_PREFIX = "jpt.core.java.mappings"; + + /** + * The singleton instance of the package. + * + * + * @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 Java Type Mapping}' class. + * + * + * @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 'Name' attribute. + * + * + * @generated + * @ordered + */ + public static final int JAVA_TYPE_MAPPING__NAME = JpaJavaPackage.JAVA_EOBJECT_FEATURE_COUNT + 0; + + /** + * The feature id for the 'Table Name' attribute. + * + * + * @generated + * @ordered + */ + public static final int JAVA_TYPE_MAPPING__TABLE_NAME = JpaJavaPackage.JAVA_EOBJECT_FEATURE_COUNT + 1; + + /** + * The number of structural features of the 'Java Type Mapping' class. + * + * + * @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 Java Entity}' class. + * + * + * @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 'Name' attribute. + * + * + * @generated + * @ordered + */ + public static final int JAVA_ENTITY__NAME = JAVA_TYPE_MAPPING__NAME; + + /** + * The feature id for the 'Table Name' attribute. + * + * + * @generated + * @ordered + */ + public static final int JAVA_ENTITY__TABLE_NAME = JAVA_TYPE_MAPPING__TABLE_NAME; + + /** + * The feature id for the 'Specified Name' attribute. + * + * + * @generated + * @ordered + */ + public static final int JAVA_ENTITY__SPECIFIED_NAME = JAVA_TYPE_MAPPING_FEATURE_COUNT + 0; + + /** + * The feature id for the 'Default Name' attribute. + * + * + * @generated + * @ordered + */ + public static final int JAVA_ENTITY__DEFAULT_NAME = JAVA_TYPE_MAPPING_FEATURE_COUNT + 1; + + /** + * The feature id for the 'Table' containment reference. + * + * + * @generated + * @ordered + */ + public static final int JAVA_ENTITY__TABLE = JAVA_TYPE_MAPPING_FEATURE_COUNT + 2; + + /** + * The feature id for the 'Primary Key Join Columns' containment reference list. + * + * + * @generated + * @ordered + */ + public static final int JAVA_ENTITY__PRIMARY_KEY_JOIN_COLUMNS = JAVA_TYPE_MAPPING_FEATURE_COUNT + 3; + + /** + * The feature id for the 'Specified Primary Key Join Columns' containment reference list. + * + * + * @generated + * @ordered + */ + public static final int JAVA_ENTITY__SPECIFIED_PRIMARY_KEY_JOIN_COLUMNS = JAVA_TYPE_MAPPING_FEATURE_COUNT + 4; + + /** + * The feature id for the 'Default Primary Key Join Columns' containment reference list. + * + * + * @generated + * @ordered + */ + public static final int JAVA_ENTITY__DEFAULT_PRIMARY_KEY_JOIN_COLUMNS = JAVA_TYPE_MAPPING_FEATURE_COUNT + 5; + + /** + * The feature id for the 'Inheritance Strategy' attribute. + * + * + * @generated + * @ordered + */ + public static final int JAVA_ENTITY__INHERITANCE_STRATEGY = JAVA_TYPE_MAPPING_FEATURE_COUNT + 6; + + /** + * The feature id for the 'Default Discriminator Value' attribute. + * + * + * @generated + * @ordered + */ + public static final int JAVA_ENTITY__DEFAULT_DISCRIMINATOR_VALUE = JAVA_TYPE_MAPPING_FEATURE_COUNT + 7; + + /** + * The feature id for the 'Specified Discriminator Value' attribute. + * + * + * @generated + * @ordered + */ + public static final int JAVA_ENTITY__SPECIFIED_DISCRIMINATOR_VALUE = JAVA_TYPE_MAPPING_FEATURE_COUNT + 8; + + /** + * The feature id for the 'Discriminator Value' attribute. + * + * + * @generated + * @ordered + */ + public static final int JAVA_ENTITY__DISCRIMINATOR_VALUE = JAVA_TYPE_MAPPING_FEATURE_COUNT + 9; + + /** + * The feature id for the 'Discriminator Column' containment reference. + * + * + * @generated + * @ordered + */ + public static final int JAVA_ENTITY__DISCRIMINATOR_COLUMN = JAVA_TYPE_MAPPING_FEATURE_COUNT + 10; + + /** + * The feature id for the 'Sequence Generator' containment reference. + * + * + * @generated + * @ordered + */ + public static final int JAVA_ENTITY__SEQUENCE_GENERATOR = JAVA_TYPE_MAPPING_FEATURE_COUNT + 11; + + /** + * The feature id for the 'Table Generator' containment reference. + * + * + * @generated + * @ordered + */ + public static final int JAVA_ENTITY__TABLE_GENERATOR = JAVA_TYPE_MAPPING_FEATURE_COUNT + 12; + + /** + * The feature id for the 'Attribute Overrides' containment reference list. + * + * + * @generated + * @ordered + */ + public static final int JAVA_ENTITY__ATTRIBUTE_OVERRIDES = JAVA_TYPE_MAPPING_FEATURE_COUNT + 13; + + /** + * The feature id for the 'Specified Attribute Overrides' containment reference list. + * + * + * @generated + * @ordered + */ + public static final int JAVA_ENTITY__SPECIFIED_ATTRIBUTE_OVERRIDES = JAVA_TYPE_MAPPING_FEATURE_COUNT + 14; + + /** + * The feature id for the 'Default Attribute Overrides' containment reference list. + * + * + * @generated + * @ordered + */ + public static final int JAVA_ENTITY__DEFAULT_ATTRIBUTE_OVERRIDES = JAVA_TYPE_MAPPING_FEATURE_COUNT + 15; + + /** + * The feature id for the 'Association Overrides' containment reference list. + * + * + * @generated + * @ordered + */ + public static final int JAVA_ENTITY__ASSOCIATION_OVERRIDES = JAVA_TYPE_MAPPING_FEATURE_COUNT + 16; + + /** + * The feature id for the 'Specified Association Overrides' containment reference list. + * + * + * @generated + * @ordered + */ + public static final int JAVA_ENTITY__SPECIFIED_ASSOCIATION_OVERRIDES = JAVA_TYPE_MAPPING_FEATURE_COUNT + 17; + + /** + * The feature id for the 'Default Association Overrides' containment reference list. + * + * + * @generated + * @ordered + */ + public static final int JAVA_ENTITY__DEFAULT_ASSOCIATION_OVERRIDES = JAVA_TYPE_MAPPING_FEATURE_COUNT + 18; + + /** + * The feature id for the 'Named Queries' containment reference list. + * + * + * @generated + * @ordered + */ + public static final int JAVA_ENTITY__NAMED_QUERIES = JAVA_TYPE_MAPPING_FEATURE_COUNT + 19; + + /** + * The feature id for the 'Named Native Queries' containment reference list. + * + * + * @generated + * @ordered + */ + public static final int JAVA_ENTITY__NAMED_NATIVE_QUERIES = JAVA_TYPE_MAPPING_FEATURE_COUNT + 20; + + /** + * The feature id for the 'Secondary Tables' containment reference list. + * + * + * @generated + * @ordered + */ + public static final int JAVA_ENTITY__SECONDARY_TABLES = JAVA_TYPE_MAPPING_FEATURE_COUNT + 21; + + /** + * The number of structural features of the 'Java Entity' class. + * + * + * @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 Java Mapped Superclass}' class. + * + * + * @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 'Name' attribute. + * + * + * @generated + * @ordered + */ + public static final int JAVA_MAPPED_SUPERCLASS__NAME = JAVA_TYPE_MAPPING__NAME; + + /** + * The feature id for the 'Table Name' attribute. + * + * + * @generated + * @ordered + */ + public static final int JAVA_MAPPED_SUPERCLASS__TABLE_NAME = JAVA_TYPE_MAPPING__TABLE_NAME; + + /** + * The number of structural features of the 'Java Mapped Superclass' class. + * + * + * @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 Java Embeddable}' class. + * + * + * @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 'Name' attribute. + * + * + * @generated + * @ordered + */ + public static final int JAVA_EMBEDDABLE__NAME = JAVA_TYPE_MAPPING__NAME; + + /** + * The feature id for the 'Table Name' attribute. + * + * + * @generated + * @ordered + */ + public static final int JAVA_EMBEDDABLE__TABLE_NAME = JAVA_TYPE_MAPPING__TABLE_NAME; + + /** + * The number of structural features of the 'Java Embeddable' class. + * + * + * @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 Java Null Type Mapping}' class. + * + * + * @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 'Name' attribute. + * + * + * @generated + * @ordered + */ + public static final int JAVA_NULL_TYPE_MAPPING__NAME = JAVA_TYPE_MAPPING__NAME; + + /** + * The feature id for the 'Table Name' attribute. + * + * + * @generated + * @ordered + */ + public static final int JAVA_NULL_TYPE_MAPPING__TABLE_NAME = JAVA_TYPE_MAPPING__TABLE_NAME; + + /** + * The number of structural features of the 'Java Null Type Mapping' class. + * + * + * @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 Java Attribute Mapping}' class. + * + * + * @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 'Java Attribute Mapping' class. + * + * + * @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 Java Null Attribute Mapping}' class. + * + * + * @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 Java Basic}' class. + * + * + * @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 'Fetch' attribute. + * + * + * @generated + * @ordered + */ + public static final int JAVA_BASIC__FETCH = JAVA_ATTRIBUTE_MAPPING_FEATURE_COUNT + 0; + + /** + * The feature id for the 'Optional' attribute. + * + * + * @generated + * @ordered + */ + public static final int JAVA_BASIC__OPTIONAL = JAVA_ATTRIBUTE_MAPPING_FEATURE_COUNT + 1; + + /** + * The feature id for the 'Column' containment reference. + * + * + * @generated + * @ordered + */ + public static final int JAVA_BASIC__COLUMN = JAVA_ATTRIBUTE_MAPPING_FEATURE_COUNT + 2; + + /** + * The feature id for the 'Lob' attribute. + * + * + * @generated + * @ordered + */ + public static final int JAVA_BASIC__LOB = JAVA_ATTRIBUTE_MAPPING_FEATURE_COUNT + 3; + + /** + * The feature id for the 'Temporal' attribute. + * + * + * @generated + * @ordered + */ + public static final int JAVA_BASIC__TEMPORAL = JAVA_ATTRIBUTE_MAPPING_FEATURE_COUNT + 4; + + /** + * The feature id for the 'Enumerated' attribute. + * + * + * @generated + * @ordered + */ + public static final int JAVA_BASIC__ENUMERATED = JAVA_ATTRIBUTE_MAPPING_FEATURE_COUNT + 5; + + /** + * The number of structural features of the 'Java Basic' class. + * + * + * @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 Java Id}' class. + * + * + * @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 'Column' containment reference. + * + * + * @generated + * @ordered + */ + public static final int JAVA_ID__COLUMN = JAVA_ATTRIBUTE_MAPPING_FEATURE_COUNT + 0; + + /** + * The feature id for the 'Generated Value' containment reference. + * + * + * @generated + * @ordered + */ + public static final int JAVA_ID__GENERATED_VALUE = JAVA_ATTRIBUTE_MAPPING_FEATURE_COUNT + 1; + + /** + * The feature id for the 'Temporal' attribute. + * + * + * @generated + * @ordered + */ + public static final int JAVA_ID__TEMPORAL = JAVA_ATTRIBUTE_MAPPING_FEATURE_COUNT + 2; + + /** + * The feature id for the 'Table Generator' containment reference. + * + * + * @generated + * @ordered + */ + public static final int JAVA_ID__TABLE_GENERATOR = JAVA_ATTRIBUTE_MAPPING_FEATURE_COUNT + 3; + + /** + * The feature id for the 'Sequence Generator' containment reference. + * + * + * @generated + * @ordered + */ + public static final int JAVA_ID__SEQUENCE_GENERATOR = JAVA_ATTRIBUTE_MAPPING_FEATURE_COUNT + 4; + + /** + * The number of structural features of the 'Java Id' class. + * + * + * @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 Java Transient}' class. + * + * + * @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 'Java Transient' class. + * + * + * @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 Java Version}' class. + * + * + * @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 'Column' containment reference. + * + * + * @generated + * @ordered + */ + public static final int JAVA_VERSION__COLUMN = JAVA_ATTRIBUTE_MAPPING_FEATURE_COUNT + 0; + + /** + * The feature id for the 'Temporal' attribute. + * + * + * @generated + * @ordered + */ + public static final int JAVA_VERSION__TEMPORAL = JAVA_ATTRIBUTE_MAPPING_FEATURE_COUNT + 1; + + /** + * The number of structural features of the 'Java Version' class. + * + * + * @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 Java Embedded Id}' class. + * + * + * @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 'Java Embedded Id' class. + * + * + * @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 Java Embedded}' class. + * + * + * @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 'Attribute Overrides' containment reference list. + * + * + * @generated + * @ordered + */ + public static final int JAVA_EMBEDDED__ATTRIBUTE_OVERRIDES = JAVA_ATTRIBUTE_MAPPING_FEATURE_COUNT + 0; + + /** + * The feature id for the 'Specified Attribute Overrides' containment reference list. + * + * + * @generated + * @ordered + */ + public static final int JAVA_EMBEDDED__SPECIFIED_ATTRIBUTE_OVERRIDES = JAVA_ATTRIBUTE_MAPPING_FEATURE_COUNT + 1; + + /** + * The feature id for the 'Default Attribute Overrides' containment reference list. + * + * + * @generated + * @ordered + */ + public static final int JAVA_EMBEDDED__DEFAULT_ATTRIBUTE_OVERRIDES = JAVA_ATTRIBUTE_MAPPING_FEATURE_COUNT + 2; + + /** + * The number of structural features of the 'Java Embedded' class. + * + * + * @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 Java Relationship Mapping}' class. + * + * + * @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 'Target Entity' attribute. + * + * + * @generated + * @ordered + */ + public static final int JAVA_RELATIONSHIP_MAPPING__TARGET_ENTITY = JAVA_ATTRIBUTE_MAPPING_FEATURE_COUNT + 0; + + /** + * The feature id for the 'Specified Target Entity' attribute. + * + * + * @generated + * @ordered + */ + public static final int JAVA_RELATIONSHIP_MAPPING__SPECIFIED_TARGET_ENTITY = JAVA_ATTRIBUTE_MAPPING_FEATURE_COUNT + 1; + + /** + * The feature id for the 'Default Target Entity' attribute. + * + * + * @generated + * @ordered + */ + public static final int JAVA_RELATIONSHIP_MAPPING__DEFAULT_TARGET_ENTITY = JAVA_ATTRIBUTE_MAPPING_FEATURE_COUNT + 2; + + /** + * The feature id for the 'Resolved Target Entity' reference. + * + * + * @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 'Java Relationship Mapping' class. + * + * + * @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 Java Single Relationship Mapping}' class. + * + * + * @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 'Target Entity' attribute. + * + * + * @generated + * @ordered + */ + public static final int JAVA_SINGLE_RELATIONSHIP_MAPPING__TARGET_ENTITY = JAVA_RELATIONSHIP_MAPPING__TARGET_ENTITY; + + /** + * The feature id for the 'Specified Target Entity' attribute. + * + * + * @generated + * @ordered + */ + public static final int JAVA_SINGLE_RELATIONSHIP_MAPPING__SPECIFIED_TARGET_ENTITY = JAVA_RELATIONSHIP_MAPPING__SPECIFIED_TARGET_ENTITY; + + /** + * The feature id for the 'Default Target Entity' attribute. + * + * + * @generated + * @ordered + */ + public static final int JAVA_SINGLE_RELATIONSHIP_MAPPING__DEFAULT_TARGET_ENTITY = JAVA_RELATIONSHIP_MAPPING__DEFAULT_TARGET_ENTITY; + + /** + * The feature id for the 'Resolved Target Entity' reference. + * + * + * @generated + * @ordered + */ + public static final int JAVA_SINGLE_RELATIONSHIP_MAPPING__RESOLVED_TARGET_ENTITY = JAVA_RELATIONSHIP_MAPPING__RESOLVED_TARGET_ENTITY; + + /** + * The feature id for the 'Fetch' attribute. + * + * + * @generated + * @ordered + */ + public static final int JAVA_SINGLE_RELATIONSHIP_MAPPING__FETCH = JAVA_RELATIONSHIP_MAPPING_FEATURE_COUNT + 0; + + /** + * The feature id for the 'Join Columns' containment reference list. + * + * + * @generated + * @ordered + */ + public static final int JAVA_SINGLE_RELATIONSHIP_MAPPING__JOIN_COLUMNS = JAVA_RELATIONSHIP_MAPPING_FEATURE_COUNT + 1; + + /** + * The feature id for the 'Specified Join Columns' containment reference list. + * + * + * @generated + * @ordered + */ + public static final int JAVA_SINGLE_RELATIONSHIP_MAPPING__SPECIFIED_JOIN_COLUMNS = JAVA_RELATIONSHIP_MAPPING_FEATURE_COUNT + 2; + + /** + * The feature id for the 'Default Join Columns' containment reference list. + * + * + * @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 'Java Single Relationship Mapping' class. + * + * + * @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 Java Many To One}' class. + * + * + * @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 'Target Entity' attribute. + * + * + * @generated + * @ordered + */ + public static final int JAVA_MANY_TO_ONE__TARGET_ENTITY = JAVA_SINGLE_RELATIONSHIP_MAPPING__TARGET_ENTITY; + + /** + * The feature id for the 'Specified Target Entity' attribute. + * + * + * @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 'Default Target Entity' attribute. + * + * + * @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 'Resolved Target Entity' reference. + * + * + * @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 'Fetch' attribute. + * + * + * @generated + * @ordered + */ + public static final int JAVA_MANY_TO_ONE__FETCH = JAVA_SINGLE_RELATIONSHIP_MAPPING__FETCH; + + /** + * The feature id for the 'Join Columns' containment reference list. + * + * + * @generated + * @ordered + */ + public static final int JAVA_MANY_TO_ONE__JOIN_COLUMNS = JAVA_SINGLE_RELATIONSHIP_MAPPING__JOIN_COLUMNS; + + /** + * The feature id for the 'Specified Join Columns' containment reference list. + * + * + * @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 'Default Join Columns' containment reference list. + * + * + * @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 'Java Many To One' class. + * + * + * @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 Java One To One}' class. + * + * + * @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 'Target Entity' attribute. + * + * + * @generated + * @ordered + */ + public static final int JAVA_ONE_TO_ONE__TARGET_ENTITY = JAVA_SINGLE_RELATIONSHIP_MAPPING__TARGET_ENTITY; + + /** + * The feature id for the 'Specified Target Entity' attribute. + * + * + * @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 'Default Target Entity' attribute. + * + * + * @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 'Resolved Target Entity' reference. + * + * + * @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 'Fetch' attribute. + * + * + * @generated + * @ordered + */ + public static final int JAVA_ONE_TO_ONE__FETCH = JAVA_SINGLE_RELATIONSHIP_MAPPING__FETCH; + + /** + * The feature id for the 'Join Columns' containment reference list. + * + * + * @generated + * @ordered + */ + public static final int JAVA_ONE_TO_ONE__JOIN_COLUMNS = JAVA_SINGLE_RELATIONSHIP_MAPPING__JOIN_COLUMNS; + + /** + * The feature id for the 'Specified Join Columns' containment reference list. + * + * + * @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 'Default Join Columns' containment reference list. + * + * + * @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 'Mapped By' attribute. + * + * + * @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 'Java One To One' class. + * + * + * @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 Java Multi Relationship Mapping}' class. + * + * + * @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 'Target Entity' attribute. + * + * + * @generated + * @ordered + */ + public static final int JAVA_MULTI_RELATIONSHIP_MAPPING__TARGET_ENTITY = JAVA_RELATIONSHIP_MAPPING__TARGET_ENTITY; + + /** + * The feature id for the 'Specified Target Entity' attribute. + * + * + * @generated + * @ordered + */ + public static final int JAVA_MULTI_RELATIONSHIP_MAPPING__SPECIFIED_TARGET_ENTITY = JAVA_RELATIONSHIP_MAPPING__SPECIFIED_TARGET_ENTITY; + + /** + * The feature id for the 'Default Target Entity' attribute. + * + * + * @generated + * @ordered + */ + public static final int JAVA_MULTI_RELATIONSHIP_MAPPING__DEFAULT_TARGET_ENTITY = JAVA_RELATIONSHIP_MAPPING__DEFAULT_TARGET_ENTITY; + + /** + * The feature id for the 'Resolved Target Entity' reference. + * + * + * @generated + * @ordered + */ + public static final int JAVA_MULTI_RELATIONSHIP_MAPPING__RESOLVED_TARGET_ENTITY = JAVA_RELATIONSHIP_MAPPING__RESOLVED_TARGET_ENTITY; + + /** + * The feature id for the 'Mapped By' attribute. + * + * + * @generated + * @ordered + */ + public static final int JAVA_MULTI_RELATIONSHIP_MAPPING__MAPPED_BY = JAVA_RELATIONSHIP_MAPPING_FEATURE_COUNT + 0; + + /** + * The feature id for the 'Fetch' attribute. + * + * + * @generated + * @ordered + */ + public static final int JAVA_MULTI_RELATIONSHIP_MAPPING__FETCH = JAVA_RELATIONSHIP_MAPPING_FEATURE_COUNT + 1; + + /** + * The feature id for the 'Join Table' containment reference. + * + * + * @generated + * @ordered + */ + public static final int JAVA_MULTI_RELATIONSHIP_MAPPING__JOIN_TABLE = JAVA_RELATIONSHIP_MAPPING_FEATURE_COUNT + 2; + + /** + * The feature id for the 'Order By' containment reference. + * + * + * @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 'Java Multi Relationship Mapping' class. + * + * + * @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 Java One To Many}' class. + * + * + * @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 'Target Entity' attribute. + * + * + * @generated + * @ordered + */ + public static final int JAVA_ONE_TO_MANY__TARGET_ENTITY = JAVA_MULTI_RELATIONSHIP_MAPPING__TARGET_ENTITY; + + /** + * The feature id for the 'Specified Target Entity' attribute. + * + * + * @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 'Default Target Entity' attribute. + * + * + * @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 'Resolved Target Entity' reference. + * + * + * @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 'Mapped By' attribute. + * + * + * @generated + * @ordered + */ + public static final int JAVA_ONE_TO_MANY__MAPPED_BY = JAVA_MULTI_RELATIONSHIP_MAPPING__MAPPED_BY; + + /** + * The feature id for the 'Fetch' attribute. + * + * + * @generated + * @ordered + */ + public static final int JAVA_ONE_TO_MANY__FETCH = JAVA_MULTI_RELATIONSHIP_MAPPING__FETCH; + + /** + * The feature id for the 'Join Table' containment reference. + * + * + * @generated + * @ordered + */ + public static final int JAVA_ONE_TO_MANY__JOIN_TABLE = JAVA_MULTI_RELATIONSHIP_MAPPING__JOIN_TABLE; + + /** + * The feature id for the 'Order By' containment reference. + * + * + * @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 'Java One To Many' class. + * + * + * @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 Java Many To Many}' class. + * + * + * @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 'Target Entity' attribute. + * + * + * @generated + * @ordered + */ + public static final int JAVA_MANY_TO_MANY__TARGET_ENTITY = JAVA_MULTI_RELATIONSHIP_MAPPING__TARGET_ENTITY; + + /** + * The feature id for the 'Specified Target Entity' attribute. + * + * + * @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 'Default Target Entity' attribute. + * + * + * @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 'Resolved Target Entity' reference. + * + * + * @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 'Mapped By' attribute. + * + * + * @generated + * @ordered + */ + public static final int JAVA_MANY_TO_MANY__MAPPED_BY = JAVA_MULTI_RELATIONSHIP_MAPPING__MAPPED_BY; + + /** + * The feature id for the 'Fetch' attribute. + * + * + * @generated + * @ordered + */ + public static final int JAVA_MANY_TO_MANY__FETCH = JAVA_MULTI_RELATIONSHIP_MAPPING__FETCH; + + /** + * The feature id for the 'Join Table' containment reference. + * + * + * @generated + * @ordered + */ + public static final int JAVA_MANY_TO_MANY__JOIN_TABLE = JAVA_MULTI_RELATIONSHIP_MAPPING__JOIN_TABLE; + + /** + * The feature id for the 'Order By' containment reference. + * + * + * @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 'Java Many To Many' class. + * + * + * @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 'Java Null Attribute Mapping' class. + * + * + * @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 Abstract Java Table}' class. + * + * + * @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 'Name' attribute. + * + * + * @generated + * @ordered + */ + public static final int ABSTRACT_JAVA_TABLE__NAME = JpaJavaPackage.JAVA_EOBJECT_FEATURE_COUNT + 0; + + /** + * The feature id for the 'Specified Name' attribute. + * + * + * @generated + * @ordered + */ + public static final int ABSTRACT_JAVA_TABLE__SPECIFIED_NAME = JpaJavaPackage.JAVA_EOBJECT_FEATURE_COUNT + 1; + + /** + * The feature id for the 'Default Name' attribute. + * + * + * @generated + * @ordered + */ + public static final int ABSTRACT_JAVA_TABLE__DEFAULT_NAME = JpaJavaPackage.JAVA_EOBJECT_FEATURE_COUNT + 2; + + /** + * The feature id for the 'Catalog' attribute. + * + * + * @generated + * @ordered + */ + public static final int ABSTRACT_JAVA_TABLE__CATALOG = JpaJavaPackage.JAVA_EOBJECT_FEATURE_COUNT + 3; + + /** + * The feature id for the 'Specified Catalog' attribute. + * + * + * @generated + * @ordered + */ + public static final int ABSTRACT_JAVA_TABLE__SPECIFIED_CATALOG = JpaJavaPackage.JAVA_EOBJECT_FEATURE_COUNT + 4; + + /** + * The feature id for the 'Default Catalog' attribute. + * + * + * @generated + * @ordered + */ + public static final int ABSTRACT_JAVA_TABLE__DEFAULT_CATALOG = JpaJavaPackage.JAVA_EOBJECT_FEATURE_COUNT + 5; + + /** + * The feature id for the 'Schema' attribute. + * + * + * @generated + * @ordered + */ + public static final int ABSTRACT_JAVA_TABLE__SCHEMA = JpaJavaPackage.JAVA_EOBJECT_FEATURE_COUNT + 6; + + /** + * The feature id for the 'Specified Schema' attribute. + * + * + * @generated + * @ordered + */ + public static final int ABSTRACT_JAVA_TABLE__SPECIFIED_SCHEMA = JpaJavaPackage.JAVA_EOBJECT_FEATURE_COUNT + 7; + + /** + * The feature id for the 'Default Schema' attribute. + * + * + * @generated + * @ordered + */ + public static final int ABSTRACT_JAVA_TABLE__DEFAULT_SCHEMA = JpaJavaPackage.JAVA_EOBJECT_FEATURE_COUNT + 8; + + /** + * The number of structural features of the 'Abstract Java Table' class. + * + * + * @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 Java Table}' class. + * + * + * @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 'Name' attribute. + * + * + * @generated + * @ordered + */ + public static final int JAVA_TABLE__NAME = ABSTRACT_JAVA_TABLE__NAME; + + /** + * The feature id for the 'Specified Name' attribute. + * + * + * @generated + * @ordered + */ + public static final int JAVA_TABLE__SPECIFIED_NAME = ABSTRACT_JAVA_TABLE__SPECIFIED_NAME; + + /** + * The feature id for the 'Default Name' attribute. + * + * + * @generated + * @ordered + */ + public static final int JAVA_TABLE__DEFAULT_NAME = ABSTRACT_JAVA_TABLE__DEFAULT_NAME; + + /** + * The feature id for the 'Catalog' attribute. + * + * + * @generated + * @ordered + */ + public static final int JAVA_TABLE__CATALOG = ABSTRACT_JAVA_TABLE__CATALOG; + + /** + * The feature id for the 'Specified Catalog' attribute. + * + * + * @generated + * @ordered + */ + public static final int JAVA_TABLE__SPECIFIED_CATALOG = ABSTRACT_JAVA_TABLE__SPECIFIED_CATALOG; + + /** + * The feature id for the 'Default Catalog' attribute. + * + * + * @generated + * @ordered + */ + public static final int JAVA_TABLE__DEFAULT_CATALOG = ABSTRACT_JAVA_TABLE__DEFAULT_CATALOG; + + /** + * The feature id for the 'Schema' attribute. + * + * + * @generated + * @ordered + */ + public static final int JAVA_TABLE__SCHEMA = ABSTRACT_JAVA_TABLE__SCHEMA; + + /** + * The feature id for the 'Specified Schema' attribute. + * + * + * @generated + * @ordered + */ + public static final int JAVA_TABLE__SPECIFIED_SCHEMA = ABSTRACT_JAVA_TABLE__SPECIFIED_SCHEMA; + + /** + * The feature id for the 'Default Schema' attribute. + * + * + * @generated + * @ordered + */ + public static final int JAVA_TABLE__DEFAULT_SCHEMA = ABSTRACT_JAVA_TABLE__DEFAULT_SCHEMA; + + /** + * The number of structural features of the 'Java Table' class. + * + * + * @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 Java Join Table}' class. + * + * + * @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 Java Column}' class. + * + * + * @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 Java Join Column}' class. + * + * + * @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 Java Attribute Override}' class. + * + * + * @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 Java Association Override}' class. + * + * + * @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 Java Discriminator Column}' class. + * + * + * @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 Java Primary Key Join Column}' class. + * + * + * @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 Java Generated Value}' class. + * + * + * @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 Java Generator}' class. + * + * + * @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 Java Table Generator}' class. + * + * + * @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 Java Sequence Generator}' class. + * + * + * @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 Java Secondary Table}' class. + * + * + * @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 'Name' attribute. + * + * + * @generated + * @ordered + */ + public static final int JAVA_SECONDARY_TABLE__NAME = ABSTRACT_JAVA_TABLE__NAME; + + /** + * The feature id for the 'Specified Name' attribute. + * + * + * @generated + * @ordered + */ + public static final int JAVA_SECONDARY_TABLE__SPECIFIED_NAME = ABSTRACT_JAVA_TABLE__SPECIFIED_NAME; + + /** + * The feature id for the 'Default Name' attribute. + * + * + * @generated + * @ordered + */ + public static final int JAVA_SECONDARY_TABLE__DEFAULT_NAME = ABSTRACT_JAVA_TABLE__DEFAULT_NAME; + + /** + * The feature id for the 'Catalog' attribute. + * + * + * @generated + * @ordered + */ + public static final int JAVA_SECONDARY_TABLE__CATALOG = ABSTRACT_JAVA_TABLE__CATALOG; + + /** + * The feature id for the 'Specified Catalog' attribute. + * + * + * @generated + * @ordered + */ + public static final int JAVA_SECONDARY_TABLE__SPECIFIED_CATALOG = ABSTRACT_JAVA_TABLE__SPECIFIED_CATALOG; + + /** + * The feature id for the 'Default Catalog' attribute. + * + * + * @generated + * @ordered + */ + public static final int JAVA_SECONDARY_TABLE__DEFAULT_CATALOG = ABSTRACT_JAVA_TABLE__DEFAULT_CATALOG; + + /** + * The feature id for the 'Schema' attribute. + * + * + * @generated + * @ordered + */ + public static final int JAVA_SECONDARY_TABLE__SCHEMA = ABSTRACT_JAVA_TABLE__SCHEMA; + + /** + * The feature id for the 'Specified Schema' attribute. + * + * + * @generated + * @ordered + */ + public static final int JAVA_SECONDARY_TABLE__SPECIFIED_SCHEMA = ABSTRACT_JAVA_TABLE__SPECIFIED_SCHEMA; + + /** + * The feature id for the 'Default Schema' attribute. + * + * + * @generated + * @ordered + */ + public static final int JAVA_SECONDARY_TABLE__DEFAULT_SCHEMA = ABSTRACT_JAVA_TABLE__DEFAULT_SCHEMA; + + /** + * The number of structural features of the 'Java Secondary Table' class. + * + * + * @generated + * @ordered + */ + public static final int JAVA_SECONDARY_TABLE_FEATURE_COUNT = ABSTRACT_JAVA_TABLE_FEATURE_COUNT + 0; + + /** + * The feature id for the 'Name' attribute. + * + * + * @generated + * @ordered + */ + public static final int JAVA_JOIN_TABLE__NAME = ABSTRACT_JAVA_TABLE__NAME; + + /** + * The feature id for the 'Specified Name' attribute. + * + * + * @generated + * @ordered + */ + public static final int JAVA_JOIN_TABLE__SPECIFIED_NAME = ABSTRACT_JAVA_TABLE__SPECIFIED_NAME; + + /** + * The feature id for the 'Default Name' attribute. + * + * + * @generated + * @ordered + */ + public static final int JAVA_JOIN_TABLE__DEFAULT_NAME = ABSTRACT_JAVA_TABLE__DEFAULT_NAME; + + /** + * The feature id for the 'Catalog' attribute. + * + * + * @generated + * @ordered + */ + public static final int JAVA_JOIN_TABLE__CATALOG = ABSTRACT_JAVA_TABLE__CATALOG; + + /** + * The feature id for the 'Specified Catalog' attribute. + * + * + * @generated + * @ordered + */ + public static final int JAVA_JOIN_TABLE__SPECIFIED_CATALOG = ABSTRACT_JAVA_TABLE__SPECIFIED_CATALOG; + + /** + * The feature id for the 'Default Catalog' attribute. + * + * + * @generated + * @ordered + */ + public static final int JAVA_JOIN_TABLE__DEFAULT_CATALOG = ABSTRACT_JAVA_TABLE__DEFAULT_CATALOG; + + /** + * The feature id for the 'Schema' attribute. + * + * + * @generated + * @ordered + */ + public static final int JAVA_JOIN_TABLE__SCHEMA = ABSTRACT_JAVA_TABLE__SCHEMA; + + /** + * The feature id for the 'Specified Schema' attribute. + * + * + * @generated + * @ordered + */ + public static final int JAVA_JOIN_TABLE__SPECIFIED_SCHEMA = ABSTRACT_JAVA_TABLE__SPECIFIED_SCHEMA; + + /** + * The feature id for the 'Default Schema' attribute. + * + * + * @generated + * @ordered + */ + public static final int JAVA_JOIN_TABLE__DEFAULT_SCHEMA = ABSTRACT_JAVA_TABLE__DEFAULT_SCHEMA; + + /** + * The feature id for the 'Join Columns' containment reference list. + * + * + * @generated + * @ordered + */ + public static final int JAVA_JOIN_TABLE__JOIN_COLUMNS = ABSTRACT_JAVA_TABLE_FEATURE_COUNT + 0; + + /** + * The feature id for the 'Specified Join Columns' containment reference list. + * + * + * @generated + * @ordered + */ + public static final int JAVA_JOIN_TABLE__SPECIFIED_JOIN_COLUMNS = ABSTRACT_JAVA_TABLE_FEATURE_COUNT + 1; + + /** + * The feature id for the 'Default Join Columns' containment reference list. + * + * + * @generated + * @ordered + */ + public static final int JAVA_JOIN_TABLE__DEFAULT_JOIN_COLUMNS = ABSTRACT_JAVA_TABLE_FEATURE_COUNT + 2; + + /** + * The feature id for the 'Inverse Join Columns' containment reference list. + * + * + * @generated + * @ordered + */ + public static final int JAVA_JOIN_TABLE__INVERSE_JOIN_COLUMNS = ABSTRACT_JAVA_TABLE_FEATURE_COUNT + 3; + + /** + * The feature id for the 'Specified Inverse Join Columns' containment reference list. + * + * + * @generated + * @ordered + */ + public static final int JAVA_JOIN_TABLE__SPECIFIED_INVERSE_JOIN_COLUMNS = ABSTRACT_JAVA_TABLE_FEATURE_COUNT + 4; + + /** + * The feature id for the 'Default Inverse Join Columns' containment reference list. + * + * + * @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 'Java Join Table' class. + * + * + * @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 Java Named Column}' class. + * + * + * @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 'Name' attribute. + * + * + * @generated + * @ordered + */ + public static final int JAVA_NAMED_COLUMN__NAME = JpaJavaPackage.JAVA_EOBJECT_FEATURE_COUNT + 0; + + /** + * The feature id for the 'Specified Name' attribute. + * + * + * @generated + * @ordered + */ + public static final int JAVA_NAMED_COLUMN__SPECIFIED_NAME = JpaJavaPackage.JAVA_EOBJECT_FEATURE_COUNT + 1; + + /** + * The feature id for the 'Default Name' attribute. + * + * + * @generated + * @ordered + */ + public static final int JAVA_NAMED_COLUMN__DEFAULT_NAME = JpaJavaPackage.JAVA_EOBJECT_FEATURE_COUNT + 2; + + /** + * The feature id for the 'Column Definition' attribute. + * + * + * @generated + * @ordered + */ + public static final int JAVA_NAMED_COLUMN__COLUMN_DEFINITION = JpaJavaPackage.JAVA_EOBJECT_FEATURE_COUNT + 3; + + /** + * The number of structural features of the 'Java Named Column' class. + * + * + * @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 Abstract Java Column}' class. + * + * + * @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 'Name' attribute. + * + * + * @generated + * @ordered + */ + public static final int ABSTRACT_JAVA_COLUMN__NAME = JAVA_NAMED_COLUMN__NAME; + + /** + * The feature id for the 'Specified Name' attribute. + * + * + * @generated + * @ordered + */ + public static final int ABSTRACT_JAVA_COLUMN__SPECIFIED_NAME = JAVA_NAMED_COLUMN__SPECIFIED_NAME; + + /** + * The feature id for the 'Default Name' attribute. + * + * + * @generated + * @ordered + */ + public static final int ABSTRACT_JAVA_COLUMN__DEFAULT_NAME = JAVA_NAMED_COLUMN__DEFAULT_NAME; + + /** + * The feature id for the 'Column Definition' attribute. + * + * + * @generated + * @ordered + */ + public static final int ABSTRACT_JAVA_COLUMN__COLUMN_DEFINITION = JAVA_NAMED_COLUMN__COLUMN_DEFINITION; + + /** + * The feature id for the 'Unique' attribute. + * + * + * @generated + * @ordered + */ + public static final int ABSTRACT_JAVA_COLUMN__UNIQUE = JAVA_NAMED_COLUMN_FEATURE_COUNT + 0; + + /** + * The feature id for the 'Nullable' attribute. + * + * + * @generated + * @ordered + */ + public static final int ABSTRACT_JAVA_COLUMN__NULLABLE = JAVA_NAMED_COLUMN_FEATURE_COUNT + 1; + + /** + * The feature id for the 'Insertable' attribute. + * + * + * @generated + * @ordered + */ + public static final int ABSTRACT_JAVA_COLUMN__INSERTABLE = JAVA_NAMED_COLUMN_FEATURE_COUNT + 2; + + /** + * The feature id for the 'Updatable' attribute. + * + * + * @generated + * @ordered + */ + public static final int ABSTRACT_JAVA_COLUMN__UPDATABLE = JAVA_NAMED_COLUMN_FEATURE_COUNT + 3; + + /** + * The feature id for the 'Table' attribute. + * + * + * @generated + * @ordered + */ + public static final int ABSTRACT_JAVA_COLUMN__TABLE = JAVA_NAMED_COLUMN_FEATURE_COUNT + 4; + + /** + * The feature id for the 'Specified Table' attribute. + * + * + * @generated + * @ordered + */ + public static final int ABSTRACT_JAVA_COLUMN__SPECIFIED_TABLE = JAVA_NAMED_COLUMN_FEATURE_COUNT + 5; + + /** + * The feature id for the 'Default Table' attribute. + * + * + * @generated + * @ordered + */ + public static final int ABSTRACT_JAVA_COLUMN__DEFAULT_TABLE = JAVA_NAMED_COLUMN_FEATURE_COUNT + 6; + + /** + * The number of structural features of the 'Abstract Java Column' class. + * + * + * @generated + * @ordered + */ + public static final int ABSTRACT_JAVA_COLUMN_FEATURE_COUNT = JAVA_NAMED_COLUMN_FEATURE_COUNT + 7; + + /** + * The feature id for the 'Name' attribute. + * + * + * @generated + * @ordered + */ + public static final int JAVA_COLUMN__NAME = ABSTRACT_JAVA_COLUMN__NAME; + + /** + * The feature id for the 'Specified Name' attribute. + * + * + * @generated + * @ordered + */ + public static final int JAVA_COLUMN__SPECIFIED_NAME = ABSTRACT_JAVA_COLUMN__SPECIFIED_NAME; + + /** + * The feature id for the 'Default Name' attribute. + * + * + * @generated + * @ordered + */ + public static final int JAVA_COLUMN__DEFAULT_NAME = ABSTRACT_JAVA_COLUMN__DEFAULT_NAME; + + /** + * The feature id for the 'Column Definition' attribute. + * + * + * @generated + * @ordered + */ + public static final int JAVA_COLUMN__COLUMN_DEFINITION = ABSTRACT_JAVA_COLUMN__COLUMN_DEFINITION; + + /** + * The feature id for the 'Unique' attribute. + * + * + * @generated + * @ordered + */ + public static final int JAVA_COLUMN__UNIQUE = ABSTRACT_JAVA_COLUMN__UNIQUE; + + /** + * The feature id for the 'Nullable' attribute. + * + * + * @generated + * @ordered + */ + public static final int JAVA_COLUMN__NULLABLE = ABSTRACT_JAVA_COLUMN__NULLABLE; + + /** + * The feature id for the 'Insertable' attribute. + * + * + * @generated + * @ordered + */ + public static final int JAVA_COLUMN__INSERTABLE = ABSTRACT_JAVA_COLUMN__INSERTABLE; + + /** + * The feature id for the 'Updatable' attribute. + * + * + * @generated + * @ordered + */ + public static final int JAVA_COLUMN__UPDATABLE = ABSTRACT_JAVA_COLUMN__UPDATABLE; + + /** + * The feature id for the 'Table' attribute. + * + * + * @generated + * @ordered + */ + public static final int JAVA_COLUMN__TABLE = ABSTRACT_JAVA_COLUMN__TABLE; + + /** + * The feature id for the 'Specified Table' attribute. + * + * + * @generated + * @ordered + */ + public static final int JAVA_COLUMN__SPECIFIED_TABLE = ABSTRACT_JAVA_COLUMN__SPECIFIED_TABLE; + + /** + * The feature id for the 'Default Table' attribute. + * + * + * @generated + * @ordered + */ + public static final int JAVA_COLUMN__DEFAULT_TABLE = ABSTRACT_JAVA_COLUMN__DEFAULT_TABLE; + + /** + * The feature id for the 'Length' attribute. + * + * + * @generated + * @ordered + */ + public static final int JAVA_COLUMN__LENGTH = ABSTRACT_JAVA_COLUMN_FEATURE_COUNT + 0; + + /** + * The feature id for the 'Precision' attribute. + * + * + * @generated + * @ordered + */ + public static final int JAVA_COLUMN__PRECISION = ABSTRACT_JAVA_COLUMN_FEATURE_COUNT + 1; + + /** + * The feature id for the 'Scale' attribute. + * + * + * @generated + * @ordered + */ + public static final int JAVA_COLUMN__SCALE = ABSTRACT_JAVA_COLUMN_FEATURE_COUNT + 2; + + /** + * The number of structural features of the 'Java Column' class. + * + * + * @generated + * @ordered + */ + public static final int JAVA_COLUMN_FEATURE_COUNT = ABSTRACT_JAVA_COLUMN_FEATURE_COUNT + 3; + + /** + * The feature id for the 'Name' attribute. + * + * + * @generated + * @ordered + */ + public static final int JAVA_JOIN_COLUMN__NAME = ABSTRACT_JAVA_COLUMN__NAME; + + /** + * The feature id for the 'Specified Name' attribute. + * + * + * @generated + * @ordered + */ + public static final int JAVA_JOIN_COLUMN__SPECIFIED_NAME = ABSTRACT_JAVA_COLUMN__SPECIFIED_NAME; + + /** + * The feature id for the 'Default Name' attribute. + * + * + * @generated + * @ordered + */ + public static final int JAVA_JOIN_COLUMN__DEFAULT_NAME = ABSTRACT_JAVA_COLUMN__DEFAULT_NAME; + + /** + * The feature id for the 'Column Definition' attribute. + * + * + * @generated + * @ordered + */ + public static final int JAVA_JOIN_COLUMN__COLUMN_DEFINITION = ABSTRACT_JAVA_COLUMN__COLUMN_DEFINITION; + + /** + * The feature id for the 'Unique' attribute. + * + * + * @generated + * @ordered + */ + public static final int JAVA_JOIN_COLUMN__UNIQUE = ABSTRACT_JAVA_COLUMN__UNIQUE; + + /** + * The feature id for the 'Nullable' attribute. + * + * + * @generated + * @ordered + */ + public static final int JAVA_JOIN_COLUMN__NULLABLE = ABSTRACT_JAVA_COLUMN__NULLABLE; + + /** + * The feature id for the 'Insertable' attribute. + * + * + * @generated + * @ordered + */ + public static final int JAVA_JOIN_COLUMN__INSERTABLE = ABSTRACT_JAVA_COLUMN__INSERTABLE; + + /** + * The feature id for the 'Updatable' attribute. + * + * + * @generated + * @ordered + */ + public static final int JAVA_JOIN_COLUMN__UPDATABLE = ABSTRACT_JAVA_COLUMN__UPDATABLE; + + /** + * The feature id for the 'Table' attribute. + * + * + * @generated + * @ordered + */ + public static final int JAVA_JOIN_COLUMN__TABLE = ABSTRACT_JAVA_COLUMN__TABLE; + + /** + * The feature id for the 'Specified Table' attribute. + * + * + * @generated + * @ordered + */ + public static final int JAVA_JOIN_COLUMN__SPECIFIED_TABLE = ABSTRACT_JAVA_COLUMN__SPECIFIED_TABLE; + + /** + * The feature id for the 'Default Table' attribute. + * + * + * @generated + * @ordered + */ + public static final int JAVA_JOIN_COLUMN__DEFAULT_TABLE = ABSTRACT_JAVA_COLUMN__DEFAULT_TABLE; + + /** + * The feature id for the 'Referenced Column Name' attribute. + * + * + * @generated + * @ordered + */ + public static final int JAVA_JOIN_COLUMN__REFERENCED_COLUMN_NAME = ABSTRACT_JAVA_COLUMN_FEATURE_COUNT + 0; + + /** + * The feature id for the 'Specified Referenced Column Name' attribute. + * + * + * @generated + * @ordered + */ + public static final int JAVA_JOIN_COLUMN__SPECIFIED_REFERENCED_COLUMN_NAME = ABSTRACT_JAVA_COLUMN_FEATURE_COUNT + 1; + + /** + * The feature id for the 'Default Referenced Column Name' attribute. + * + * + * @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 'Java Join Column' class. + * + * + * @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 Java Override}' class. + * + * + * @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 'Name' attribute. + * + * + * @generated + * @ordered + */ + public static final int JAVA_OVERRIDE__NAME = JpaJavaPackage.JAVA_EOBJECT_FEATURE_COUNT + 0; + + /** + * The number of structural features of the 'Java Override' class. + * + * + * @generated + * @ordered + */ + public static final int JAVA_OVERRIDE_FEATURE_COUNT = JpaJavaPackage.JAVA_EOBJECT_FEATURE_COUNT + 1; + + /** + * The feature id for the 'Name' attribute. + * + * + * @generated + * @ordered + */ + public static final int JAVA_ATTRIBUTE_OVERRIDE__NAME = JAVA_OVERRIDE__NAME; + + /** + * The feature id for the 'Column' containment reference. + * + * + * @generated + * @ordered + */ + public static final int JAVA_ATTRIBUTE_OVERRIDE__COLUMN = JAVA_OVERRIDE_FEATURE_COUNT + 0; + + /** + * The number of structural features of the 'Java Attribute Override' class. + * + * + * @generated + * @ordered + */ + public static final int JAVA_ATTRIBUTE_OVERRIDE_FEATURE_COUNT = JAVA_OVERRIDE_FEATURE_COUNT + 1; + + /** + * The feature id for the 'Name' attribute. + * + * + * @generated + * @ordered + */ + public static final int JAVA_ASSOCIATION_OVERRIDE__NAME = JAVA_OVERRIDE__NAME; + + /** + * The feature id for the 'Join Columns' containment reference list. + * + * + * @generated + * @ordered + */ + public static final int JAVA_ASSOCIATION_OVERRIDE__JOIN_COLUMNS = JAVA_OVERRIDE_FEATURE_COUNT + 0; + + /** + * The feature id for the 'Specified Join Columns' containment reference list. + * + * + * @generated + * @ordered + */ + public static final int JAVA_ASSOCIATION_OVERRIDE__SPECIFIED_JOIN_COLUMNS = JAVA_OVERRIDE_FEATURE_COUNT + 1; + + /** + * The feature id for the 'Default Join Columns' containment reference list. + * + * + * @generated + * @ordered + */ + public static final int JAVA_ASSOCIATION_OVERRIDE__DEFAULT_JOIN_COLUMNS = JAVA_OVERRIDE_FEATURE_COUNT + 2; + + /** + * The number of structural features of the 'Java Association Override' class. + * + * + * @generated + * @ordered + */ + public static final int JAVA_ASSOCIATION_OVERRIDE_FEATURE_COUNT = JAVA_OVERRIDE_FEATURE_COUNT + 3; + + /** + * The feature id for the 'Default Name' attribute. + * + * + * @generated + * @ordered + */ + public static final int JAVA_DISCRIMINATOR_COLUMN__DEFAULT_NAME = JpaJavaPackage.JAVA_EOBJECT_FEATURE_COUNT + 0; + + /** + * The feature id for the 'Specified Name' attribute. + * + * + * @generated + * @ordered + */ + public static final int JAVA_DISCRIMINATOR_COLUMN__SPECIFIED_NAME = JpaJavaPackage.JAVA_EOBJECT_FEATURE_COUNT + 1; + + /** + * The feature id for the 'Name' attribute. + * + * + * @generated + * @ordered + */ + public static final int JAVA_DISCRIMINATOR_COLUMN__NAME = JpaJavaPackage.JAVA_EOBJECT_FEATURE_COUNT + 2; + + /** + * The feature id for the 'Discriminator Type' attribute. + * + * + * @generated + * @ordered + */ + public static final int JAVA_DISCRIMINATOR_COLUMN__DISCRIMINATOR_TYPE = JpaJavaPackage.JAVA_EOBJECT_FEATURE_COUNT + 3; + + /** + * The feature id for the 'Column Definition' attribute. + * + * + * @generated + * @ordered + */ + public static final int JAVA_DISCRIMINATOR_COLUMN__COLUMN_DEFINITION = JpaJavaPackage.JAVA_EOBJECT_FEATURE_COUNT + 4; + + /** + * The feature id for the 'Default Length' attribute. + * + * + * @generated + * @ordered + */ + public static final int JAVA_DISCRIMINATOR_COLUMN__DEFAULT_LENGTH = JpaJavaPackage.JAVA_EOBJECT_FEATURE_COUNT + 5; + + /** + * The feature id for the 'Specified Length' attribute. + * + * + * @generated + * @ordered + */ + public static final int JAVA_DISCRIMINATOR_COLUMN__SPECIFIED_LENGTH = JpaJavaPackage.JAVA_EOBJECT_FEATURE_COUNT + 6; + + /** + * The feature id for the 'Length' attribute. + * + * + * @generated + * @ordered + */ + public static final int JAVA_DISCRIMINATOR_COLUMN__LENGTH = JpaJavaPackage.JAVA_EOBJECT_FEATURE_COUNT + 7; + + /** + * The number of structural features of the 'Java Discriminator Column' class. + * + * + * @generated + * @ordered + */ + public static final int JAVA_DISCRIMINATOR_COLUMN_FEATURE_COUNT = JpaJavaPackage.JAVA_EOBJECT_FEATURE_COUNT + 8; + + /** + * The feature id for the 'Name' attribute. + * + * + * @generated + * @ordered + */ + public static final int JAVA_PRIMARY_KEY_JOIN_COLUMN__NAME = JpaJavaPackage.JAVA_EOBJECT_FEATURE_COUNT + 0; + + /** + * The feature id for the 'Specified Name' attribute. + * + * + * @generated + * @ordered + */ + public static final int JAVA_PRIMARY_KEY_JOIN_COLUMN__SPECIFIED_NAME = JpaJavaPackage.JAVA_EOBJECT_FEATURE_COUNT + 1; + + /** + * The feature id for the 'Default Name' attribute. + * + * + * @generated + * @ordered + */ + public static final int JAVA_PRIMARY_KEY_JOIN_COLUMN__DEFAULT_NAME = JpaJavaPackage.JAVA_EOBJECT_FEATURE_COUNT + 2; + + /** + * The feature id for the 'Column Definition' attribute. + * + * + * @generated + * @ordered + */ + public static final int JAVA_PRIMARY_KEY_JOIN_COLUMN__COLUMN_DEFINITION = JpaJavaPackage.JAVA_EOBJECT_FEATURE_COUNT + 3; + + /** + * The feature id for the 'Referenced Column Name' attribute. + * + * + * @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 'Specified Referenced Column Name' attribute. + * + * + * @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 'Default Referenced Column Name' attribute. + * + * + * @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 'Java Primary Key Join Column' class. + * + * + * @generated + * @ordered + */ + public static final int JAVA_PRIMARY_KEY_JOIN_COLUMN_FEATURE_COUNT = JpaJavaPackage.JAVA_EOBJECT_FEATURE_COUNT + 7; + + /** + * The feature id for the 'Strategy' attribute. + * + * + * @generated + * @ordered + */ + public static final int JAVA_GENERATED_VALUE__STRATEGY = JpaJavaPackage.JAVA_EOBJECT_FEATURE_COUNT + 0; + + /** + * The feature id for the 'Generator' attribute. + * + * + * @generated + * @ordered + */ + public static final int JAVA_GENERATED_VALUE__GENERATOR = JpaJavaPackage.JAVA_EOBJECT_FEATURE_COUNT + 1; + + /** + * The number of structural features of the 'Java Generated Value' class. + * + * + * @generated + * @ordered + */ + public static final int JAVA_GENERATED_VALUE_FEATURE_COUNT = JpaJavaPackage.JAVA_EOBJECT_FEATURE_COUNT + 2; + + /** + * The feature id for the 'Name' attribute. + * + * + * @generated + * @ordered + */ + public static final int JAVA_GENERATOR__NAME = JpaJavaPackage.JAVA_EOBJECT_FEATURE_COUNT + 0; + + /** + * The feature id for the 'Initial Value' attribute. + * + * + * @generated + * @ordered + */ + public static final int JAVA_GENERATOR__INITIAL_VALUE = JpaJavaPackage.JAVA_EOBJECT_FEATURE_COUNT + 1; + + /** + * The feature id for the 'Specified Initial Value' attribute. + * + * + * @generated + * @ordered + */ + public static final int JAVA_GENERATOR__SPECIFIED_INITIAL_VALUE = JpaJavaPackage.JAVA_EOBJECT_FEATURE_COUNT + 2; + + /** + * The feature id for the 'Default Initial Value' attribute. + * + * + * @generated + * @ordered + */ + public static final int JAVA_GENERATOR__DEFAULT_INITIAL_VALUE = JpaJavaPackage.JAVA_EOBJECT_FEATURE_COUNT + 3; + + /** + * The feature id for the 'Allocation Size' attribute. + * + * + * @generated + * @ordered + */ + public static final int JAVA_GENERATOR__ALLOCATION_SIZE = JpaJavaPackage.JAVA_EOBJECT_FEATURE_COUNT + 4; + + /** + * The feature id for the 'Specified Allocation Size' attribute. + * + * + * @generated + * @ordered + */ + public static final int JAVA_GENERATOR__SPECIFIED_ALLOCATION_SIZE = JpaJavaPackage.JAVA_EOBJECT_FEATURE_COUNT + 5; + + /** + * The feature id for the 'Default Allocation Size' attribute. + * + * + * @generated + * @ordered + */ + public static final int JAVA_GENERATOR__DEFAULT_ALLOCATION_SIZE = JpaJavaPackage.JAVA_EOBJECT_FEATURE_COUNT + 6; + + /** + * The number of structural features of the 'Java Generator' class. + * + * + * @generated + * @ordered + */ + public static final int JAVA_GENERATOR_FEATURE_COUNT = JpaJavaPackage.JAVA_EOBJECT_FEATURE_COUNT + 7; + + /** + * The feature id for the 'Name' attribute. + * + * + * @generated + * @ordered + */ + public static final int JAVA_TABLE_GENERATOR__NAME = JAVA_GENERATOR__NAME; + + /** + * The feature id for the 'Initial Value' attribute. + * + * + * @generated + * @ordered + */ + public static final int JAVA_TABLE_GENERATOR__INITIAL_VALUE = JAVA_GENERATOR__INITIAL_VALUE; + + /** + * The feature id for the 'Specified Initial Value' attribute. + * + * + * @generated + * @ordered + */ + public static final int JAVA_TABLE_GENERATOR__SPECIFIED_INITIAL_VALUE = JAVA_GENERATOR__SPECIFIED_INITIAL_VALUE; + + /** + * The feature id for the 'Default Initial Value' attribute. + * + * + * @generated + * @ordered + */ + public static final int JAVA_TABLE_GENERATOR__DEFAULT_INITIAL_VALUE = JAVA_GENERATOR__DEFAULT_INITIAL_VALUE; + + /** + * The feature id for the 'Allocation Size' attribute. + * + * + * @generated + * @ordered + */ + public static final int JAVA_TABLE_GENERATOR__ALLOCATION_SIZE = JAVA_GENERATOR__ALLOCATION_SIZE; + + /** + * The feature id for the 'Specified Allocation Size' attribute. + * + * + * @generated + * @ordered + */ + public static final int JAVA_TABLE_GENERATOR__SPECIFIED_ALLOCATION_SIZE = JAVA_GENERATOR__SPECIFIED_ALLOCATION_SIZE; + + /** + * The feature id for the 'Default Allocation Size' attribute. + * + * + * @generated + * @ordered + */ + public static final int JAVA_TABLE_GENERATOR__DEFAULT_ALLOCATION_SIZE = JAVA_GENERATOR__DEFAULT_ALLOCATION_SIZE; + + /** + * The feature id for the 'Table' attribute. + * + * + * @generated + * @ordered + */ + public static final int JAVA_TABLE_GENERATOR__TABLE = JAVA_GENERATOR_FEATURE_COUNT + 0; + + /** + * The feature id for the 'Specified Table' attribute. + * + * + * @generated + * @ordered + */ + public static final int JAVA_TABLE_GENERATOR__SPECIFIED_TABLE = JAVA_GENERATOR_FEATURE_COUNT + 1; + + /** + * The feature id for the 'Default Table' attribute. + * + * + * @generated + * @ordered + */ + public static final int JAVA_TABLE_GENERATOR__DEFAULT_TABLE = JAVA_GENERATOR_FEATURE_COUNT + 2; + + /** + * The feature id for the 'Catalog' attribute. + * + * + * @generated + * @ordered + */ + public static final int JAVA_TABLE_GENERATOR__CATALOG = JAVA_GENERATOR_FEATURE_COUNT + 3; + + /** + * The feature id for the 'Specified Catalog' attribute. + * + * + * @generated + * @ordered + */ + public static final int JAVA_TABLE_GENERATOR__SPECIFIED_CATALOG = JAVA_GENERATOR_FEATURE_COUNT + 4; + + /** + * The feature id for the 'Default Catalog' attribute. + * + * + * @generated + * @ordered + */ + public static final int JAVA_TABLE_GENERATOR__DEFAULT_CATALOG = JAVA_GENERATOR_FEATURE_COUNT + 5; + + /** + * The feature id for the 'Schema' attribute. + * + * + * @generated + * @ordered + */ + public static final int JAVA_TABLE_GENERATOR__SCHEMA = JAVA_GENERATOR_FEATURE_COUNT + 6; + + /** + * The feature id for the 'Specified Schema' attribute. + * + * + * @generated + * @ordered + */ + public static final int JAVA_TABLE_GENERATOR__SPECIFIED_SCHEMA = JAVA_GENERATOR_FEATURE_COUNT + 7; + + /** + * The feature id for the 'Default Schema' attribute. + * + * + * @generated + * @ordered + */ + public static final int JAVA_TABLE_GENERATOR__DEFAULT_SCHEMA = JAVA_GENERATOR_FEATURE_COUNT + 8; + + /** + * The feature id for the 'Pk Column Name' attribute. + * + * + * @generated + * @ordered + */ + public static final int JAVA_TABLE_GENERATOR__PK_COLUMN_NAME = JAVA_GENERATOR_FEATURE_COUNT + 9; + + /** + * The feature id for the 'Specified Pk Column Name' attribute. + * + * + * @generated + * @ordered + */ + public static final int JAVA_TABLE_GENERATOR__SPECIFIED_PK_COLUMN_NAME = JAVA_GENERATOR_FEATURE_COUNT + 10; + + /** + * The feature id for the 'Default Pk Column Name' attribute. + * + * + * @generated + * @ordered + */ + public static final int JAVA_TABLE_GENERATOR__DEFAULT_PK_COLUMN_NAME = JAVA_GENERATOR_FEATURE_COUNT + 11; + + /** + * The feature id for the 'Value Column Name' attribute. + * + * + * @generated + * @ordered + */ + public static final int JAVA_TABLE_GENERATOR__VALUE_COLUMN_NAME = JAVA_GENERATOR_FEATURE_COUNT + 12; + + /** + * The feature id for the 'Specified Value Column Name' attribute. + * + * + * @generated + * @ordered + */ + public static final int JAVA_TABLE_GENERATOR__SPECIFIED_VALUE_COLUMN_NAME = JAVA_GENERATOR_FEATURE_COUNT + 13; + + /** + * The feature id for the 'Default Value Column Name' attribute. + * + * + * @generated + * @ordered + */ + public static final int JAVA_TABLE_GENERATOR__DEFAULT_VALUE_COLUMN_NAME = JAVA_GENERATOR_FEATURE_COUNT + 14; + + /** + * The feature id for the 'Pk Column Value' attribute. + * + * + * @generated + * @ordered + */ + public static final int JAVA_TABLE_GENERATOR__PK_COLUMN_VALUE = JAVA_GENERATOR_FEATURE_COUNT + 15; + + /** + * The feature id for the 'Specified Pk Column Value' attribute. + * + * + * @generated + * @ordered + */ + public static final int JAVA_TABLE_GENERATOR__SPECIFIED_PK_COLUMN_VALUE = JAVA_GENERATOR_FEATURE_COUNT + 16; + + /** + * The feature id for the 'Default Pk Column Value' attribute. + * + * + * @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 'Java Table Generator' class. + * + * + * @generated + * @ordered + */ + public static final int JAVA_TABLE_GENERATOR_FEATURE_COUNT = JAVA_GENERATOR_FEATURE_COUNT + 18; + + /** + * The feature id for the 'Name' attribute. + * + * + * @generated + * @ordered + */ + public static final int JAVA_SEQUENCE_GENERATOR__NAME = JAVA_GENERATOR__NAME; + + /** + * The feature id for the 'Initial Value' attribute. + * + * + * @generated + * @ordered + */ + public static final int JAVA_SEQUENCE_GENERATOR__INITIAL_VALUE = JAVA_GENERATOR__INITIAL_VALUE; + + /** + * The feature id for the 'Specified Initial Value' attribute. + * + * + * @generated + * @ordered + */ + public static final int JAVA_SEQUENCE_GENERATOR__SPECIFIED_INITIAL_VALUE = JAVA_GENERATOR__SPECIFIED_INITIAL_VALUE; + + /** + * The feature id for the 'Default Initial Value' attribute. + * + * + * @generated + * @ordered + */ + public static final int JAVA_SEQUENCE_GENERATOR__DEFAULT_INITIAL_VALUE = JAVA_GENERATOR__DEFAULT_INITIAL_VALUE; + + /** + * The feature id for the 'Allocation Size' attribute. + * + * + * @generated + * @ordered + */ + public static final int JAVA_SEQUENCE_GENERATOR__ALLOCATION_SIZE = JAVA_GENERATOR__ALLOCATION_SIZE; + + /** + * The feature id for the 'Specified Allocation Size' attribute. + * + * + * @generated + * @ordered + */ + public static final int JAVA_SEQUENCE_GENERATOR__SPECIFIED_ALLOCATION_SIZE = JAVA_GENERATOR__SPECIFIED_ALLOCATION_SIZE; + + /** + * The feature id for the 'Default Allocation Size' attribute. + * + * + * @generated + * @ordered + */ + public static final int JAVA_SEQUENCE_GENERATOR__DEFAULT_ALLOCATION_SIZE = JAVA_GENERATOR__DEFAULT_ALLOCATION_SIZE; + + /** + * The feature id for the 'Sequence Name' attribute. + * + * + * @generated + * @ordered + */ + public static final int JAVA_SEQUENCE_GENERATOR__SEQUENCE_NAME = JAVA_GENERATOR_FEATURE_COUNT + 0; + + /** + * The feature id for the 'Specified Sequence Name' attribute. + * + * + * @generated + * @ordered + */ + public static final int JAVA_SEQUENCE_GENERATOR__SPECIFIED_SEQUENCE_NAME = JAVA_GENERATOR_FEATURE_COUNT + 1; + + /** + * The feature id for the 'Default Sequence Name' attribute. + * + * + * @generated + * @ordered + */ + public static final int JAVA_SEQUENCE_GENERATOR__DEFAULT_SEQUENCE_NAME = JAVA_GENERATOR_FEATURE_COUNT + 2; + + /** + * The number of structural features of the 'Java Sequence Generator' class. + * + * + * @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 Java Order By}' class. + * + * + * @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 'Value' attribute. + * + * + * @generated + * @ordered + */ + public static final int JAVA_ORDER_BY__VALUE = JpaJavaPackage.JAVA_EOBJECT_FEATURE_COUNT + 0; + + /** + * The feature id for the 'Type' attribute. + * + * + * @generated + * @ordered + */ + public static final int JAVA_ORDER_BY__TYPE = JpaJavaPackage.JAVA_EOBJECT_FEATURE_COUNT + 1; + + /** + * The number of structural features of the 'Java Order By' class. + * + * + * @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 Java Abstract Query}' class. + * + * + * @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 'Name' attribute. + * + * + * @generated + * @ordered + */ + public static final int JAVA_ABSTRACT_QUERY__NAME = JpaJavaPackage.JAVA_EOBJECT_FEATURE_COUNT + 0; + + /** + * The feature id for the 'Query' attribute. + * + * + * @generated + * @ordered + */ + public static final int JAVA_ABSTRACT_QUERY__QUERY = JpaJavaPackage.JAVA_EOBJECT_FEATURE_COUNT + 1; + + /** + * The feature id for the 'Hints' containment reference list. + * + * + * @generated + * @ordered + */ + public static final int JAVA_ABSTRACT_QUERY__HINTS = JpaJavaPackage.JAVA_EOBJECT_FEATURE_COUNT + 2; + + /** + * The number of structural features of the 'Java Abstract Query' class. + * + * + * @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 Java Named Query}' class. + * + * + * @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 'Name' attribute. + * + * + * @generated + * @ordered + */ + public static final int JAVA_NAMED_QUERY__NAME = JAVA_ABSTRACT_QUERY__NAME; + + /** + * The feature id for the 'Query' attribute. + * + * + * @generated + * @ordered + */ + public static final int JAVA_NAMED_QUERY__QUERY = JAVA_ABSTRACT_QUERY__QUERY; + + /** + * The feature id for the 'Hints' containment reference list. + * + * + * @generated + * @ordered + */ + public static final int JAVA_NAMED_QUERY__HINTS = JAVA_ABSTRACT_QUERY__HINTS; + + /** + * The number of structural features of the 'Java Named Query' class. + * + * + * @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 Java Named Native Query}' class. + * + * + * @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 'Name' attribute. + * + * + * @generated + * @ordered + */ + public static final int JAVA_NAMED_NATIVE_QUERY__NAME = JAVA_ABSTRACT_QUERY__NAME; + + /** + * The feature id for the 'Query' attribute. + * + * + * @generated + * @ordered + */ + public static final int JAVA_NAMED_NATIVE_QUERY__QUERY = JAVA_ABSTRACT_QUERY__QUERY; + + /** + * The feature id for the 'Hints' containment reference list. + * + * + * @generated + * @ordered + */ + public static final int JAVA_NAMED_NATIVE_QUERY__HINTS = JAVA_ABSTRACT_QUERY__HINTS; + + /** + * The feature id for the 'Result Class' attribute. + * + * + * @generated + * @ordered + */ + public static final int JAVA_NAMED_NATIVE_QUERY__RESULT_CLASS = JAVA_ABSTRACT_QUERY_FEATURE_COUNT + 0; + + /** + * The feature id for the 'Result Set Mapping' attribute. + * + * + * @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 'Java Named Native Query' class. + * + * + * @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 Java Query Hint}' class. + * + * + * @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 'Name' attribute. + * + * + * @generated + * @ordered + */ + public static final int JAVA_QUERY_HINT__NAME = JpaJavaPackage.JAVA_EOBJECT_FEATURE_COUNT + 0; + + /** + * The feature id for the 'Value' attribute. + * + * + * @generated + * @ordered + */ + public static final int JAVA_QUERY_HINT__VALUE = JpaJavaPackage.JAVA_EOBJECT_FEATURE_COUNT + 1; + + /** + * The number of structural features of the 'Java Query Hint' class. + * + * + * @generated + * @ordered + */ + public static final int JAVA_QUERY_HINT_FEATURE_COUNT = JpaJavaPackage.JAVA_EOBJECT_FEATURE_COUNT + 2; + + /** + * + * + * @generated + */ + private EClass javaEntityEClass = null; + + /** + * + * + * @generated + */ + private EClass javaMappedSuperclassEClass = null; + + /** + * + * + * @generated + */ + private EClass javaEmbeddableEClass = null; + + /** + * + * + * @generated + */ + private EClass javaNullTypeMappingEClass = null; + + /** + * + * + * @generated + */ + private EClass javaNullAttributeMappingEClass = null; + + /** + * + * + * @generated + */ + private EClass javaBasicEClass = null; + + /** + * + * + * @generated + */ + private EClass javaIdEClass = null; + + /** + * + * + * @generated + */ + private EClass javaTransientEClass = null; + + /** + * + * + * @generated + */ + private EClass javaVersionEClass = null; + + /** + * + * + * @generated + */ + private EClass javaEmbeddedIdEClass = null; + + /** + * + * + * @generated + */ + private EClass javaEmbeddedEClass = null; + + /** + * + * + * @generated + */ + private EClass javaAttributeMappingEClass = null; + + /** + * + * + * @generated + */ + private EClass javaTypeMappingEClass = null; + + /** + * + * + * @generated + */ + private EClass abstractJavaTableEClass = null; + + /** + * + * + * @generated + */ + private EClass javaTableEClass = null; + + /** + * + * + * @generated + */ + private EClass javaColumnEClass = null; + + /** + * + * + * @generated + */ + private EClass javaRelationshipMappingEClass = null; + + /** + * + * + * @generated + */ + private EClass javaSingleRelationshipMappingEClass = null; + + /** + * + * + * @generated + */ + private EClass javaManyToOneEClass = null; + + /** + * + * + * @generated + */ + private EClass javaOneToOneEClass = null; + + /** + * + * + * @generated + */ + private EClass javaMultiRelationshipMappingEClass = null; + + /** + * + * + * @generated + */ + private EClass javaOneToManyEClass = null; + + /** + * + * + * @generated + */ + private EClass javaManyToManyEClass = null; + + /** + * + * + * @generated + */ + private EClass javaJoinTableEClass = null; + + /** + * + * + * @generated + */ + private EClass javaNamedColumnEClass = null; + + /** + * + * + * @generated + */ + private EClass abstractJavaColumnEClass = null; + + /** + * + * + * @generated + */ + private EClass javaJoinColumnEClass = null; + + /** + * + * + * @generated + */ + private EClass javaOverrideEClass = null; + + /** + * + * + * @generated + */ + private EClass javaAttributeOverrideEClass = null; + + /** + * + * + * @generated + */ + private EClass javaAssociationOverrideEClass = null; + + /** + * + * + * @generated + */ + private EClass javaDiscriminatorColumnEClass = null; + + /** + * + * + * @generated + */ + private EClass javaPrimaryKeyJoinColumnEClass = null; + + /** + * + * + * @generated + */ + private EClass javaGeneratedValueEClass = null; + + /** + * + * + * @generated + */ + private EClass javaGeneratorEClass = null; + + /** + * + * + * @generated + */ + private EClass javaTableGeneratorEClass = null; + + /** + * + * + * @generated + */ + private EClass javaSequenceGeneratorEClass = null; + + /** + * + * + * @generated + */ + private EClass javaOrderByEClass = null; + + /** + * + * + * @generated + */ + private EClass javaAbstractQueryEClass = null; + + /** + * + * + * @generated + */ + private EClass javaNamedQueryEClass = null; + + /** + * + * + * @generated + */ + private EClass javaNamedNativeQueryEClass = null; + + /** + * + * + * @generated + */ + private EClass javaQueryHintEClass = null; + + /** + * + * + * @generated + */ + private EClass javaSecondaryTableEClass = null; + + /** + * Creates an instance of the model Package, registered with + * {@link org.eclipse.emf.ecore.EPackage.Registry EPackage.Registry} by the package + * package URI value. + *

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. + * + * + * @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); + } + + /** + * + * + * @generated + */ + private static boolean isInited = false; + + /** + * Creates, registers, and initializes the Package 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. + *

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. + *

Invocation of this method will not affect any packages that have + * already been initialized. + * + * + * @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 Java Entity}'. + * + * + * @return the meta object for class 'Java Entity'. + * @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 Secondary Tables}'. + * + * + * @return the meta object for the containment reference list 'Secondary Tables'. + * @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 Java Mapped Superclass}'. + * + * + * @return the meta object for class 'Java Mapped Superclass'. + * @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 Java Embeddable}'. + * + * + * @return the meta object for class 'Java Embeddable'. + * @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 Java Null Type Mapping}'. + * + * + * @return the meta object for class 'Java Null Type Mapping'. + * @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 Java Null Attribute Mapping}'. + * + * + * @return the meta object for class 'Java Null Attribute Mapping'. + * @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 Java Basic}'. + * + * + * @return the meta object for class 'Java Basic'. + * @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 Java Id}'. + * + * + * @return the meta object for class 'Java Id'. + * @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 Java Transient}'. + * + * + * @return the meta object for class 'Java Transient'. + * @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 Java Version}'. + * + * + * @return the meta object for class 'Java Version'. + * @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 Java Embedded Id}'. + * + * + * @return the meta object for class 'Java Embedded Id'. + * @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 Java Embedded}'. + * + * + * @return the meta object for class 'Java Embedded'. + * @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 Java Attribute Mapping}'. + * + * + * @return the meta object for class 'Java Attribute Mapping'. + * @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 Java Type Mapping}'. + * + * + * @return the meta object for class 'Java Type Mapping'. + * @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 Abstract Java Table}'. + * + * + * @return the meta object for class 'Abstract Java Table'. + * @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 Java Table}'. + * + * + * @return the meta object for class 'Java Table'. + * @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 Java Column}'. + * + * + * @return the meta object for class 'Java Column'. + * @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 Java Relationship Mapping}'. + * + * + * @return the meta object for class 'Java Relationship Mapping'. + * @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 Java Single Relationship Mapping}'. + * + * + * @return the meta object for class 'Java Single Relationship Mapping'. + * @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 Java Many To One}'. + * + * + * @return the meta object for class 'Java Many To One'. + * @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 Java One To One}'. + * + * + * @return the meta object for class 'Java One To One'. + * @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 Java Multi Relationship Mapping}'. + * + * + * @return the meta object for class 'Java Multi Relationship Mapping'. + * @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 Java One To Many}'. + * + * + * @return the meta object for class 'Java One To Many'. + * @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 Java Many To Many}'. + * + * + * @return the meta object for class 'Java Many To Many'. + * @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 Java Join Table}'. + * + * + * @return the meta object for class 'Java Join Table'. + * @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 Java Named Column}'. + * + * + * @return the meta object for class 'Java Named Column'. + * @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 Abstract Java Column}'. + * + * + * @return the meta object for class 'Abstract Java Column'. + * @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 Java Join Column}'. + * + * + * @return the meta object for class 'Java Join Column'. + * @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 Java Override}'. + * + * + * @return the meta object for class 'Java Override'. + * @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 Java Attribute Override}'. + * + * + * @return the meta object for class 'Java Attribute Override'. + * @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 Java Association Override}'. + * + * + * @return the meta object for class 'Java Association Override'. + * @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 Java Discriminator Column}'. + * + * + * @return the meta object for class 'Java Discriminator Column'. + * @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 Java Primary Key Join Column}'. + * + * + * @return the meta object for class 'Java Primary Key Join Column'. + * @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 Java Generated Value}'. + * + * + * @return the meta object for class 'Java Generated Value'. + * @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 Java Generator}'. + * + * + * @return the meta object for class 'Java Generator'. + * @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 Java Table Generator}'. + * + * + * @return the meta object for class 'Java Table Generator'. + * @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 Java Sequence Generator}'. + * + * + * @return the meta object for class 'Java Sequence Generator'. + * @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 Java Order By}'. + * + * + * @return the meta object for class 'Java Order By'. + * @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 Java Abstract Query}'. + * + * + * @return the meta object for class 'Java Abstract Query'. + * @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 Java Named Query}'. + * + * + * @return the meta object for class 'Java Named Query'. + * @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 Java Named Native Query}'. + * + * + * @return the meta object for class 'Java Named Native Query'. + * @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 Java Query Hint}'. + * + * + * @return the meta object for class 'Java Query Hint'. + * @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 Java Secondary Table}'. + * + * + * @return the meta object for class 'Java Secondary Table'. + * @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. + * + * + * @return the factory that creates the instances of the model. + * @generated + */ + public JpaJavaMappingsFactory getJpaJavaMappingsFactory() { + return (JpaJavaMappingsFactory) getEFactoryInstance(); + } + + /** + * + * + * @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. + * + * + * @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); + } + + /** + * + * + * @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. + * + * + * @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); + } + /** + * + * Defines literals for the meta objects that represent + *

    + *
  • each class,
  • + *
  • each feature of each class,
  • + *
  • each enum,
  • + *
  • and each data type
  • + *
+ * + * @generated + */ + public interface Literals + { + /** + * The meta object literal for the '{@link org.eclipse.jpt.core.internal.content.java.mappings.JavaEntity Java Entity}' class. + * + * + * @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 'Secondary Tables' containment reference list feature. + * + * + * @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 Java Mapped Superclass}' class. + * + * + * @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 Java Embeddable}' class. + * + * + * @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 Java Null Type Mapping}' class. + * + * + * @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 Java Null Attribute Mapping}' class. + * + * + * @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 Java Basic}' class. + * + * + * @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 Java Id}' class. + * + * + * @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 Java Transient}' class. + * + * + * @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 Java Version}' class. + * + * + * @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 Java Embedded Id}' class. + * + * + * @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 Java Embedded}' class. + * + * + * @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 Java Attribute Mapping}' class. + * + * + * @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 Java Type Mapping}' class. + * + * + * @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 Abstract Java Table}' class. + * + * + * @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 Java Table}' class. + * + * + * @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 Java Column}' class. + * + * + * @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 Java Relationship Mapping}' class. + * + * + * @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 Java Single Relationship Mapping}' class. + * + * + * @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 Java Many To One}' class. + * + * + * @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 Java One To One}' class. + * + * + * @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 Java Multi Relationship Mapping}' class. + * + * + * @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 Java One To Many}' class. + * + * + * @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 Java Many To Many}' class. + * + * + * @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 Java Join Table}' class. + * + * + * @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 Java Named Column}' class. + * + * + * @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 Abstract Java Column}' class. + * + * + * @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 Java Join Column}' class. + * + * + * @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 Java Override}' class. + * + * + * @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 Java Attribute Override}' class. + * + * + * @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 Java Association Override}' class. + * + * + * @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 Java Discriminator Column}' class. + * + * + * @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 Java Primary Key Join Column}' class. + * + * + * @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 Java Generated Value}' class. + * + * + * @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 Java Generator}' class. + * + * + * @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 Java Table Generator}' class. + * + * + * @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 Java Sequence Generator}' class. + * + * + * @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 Java Order By}' class. + * + * + * @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 Java Abstract Query}' class. + * + * + * @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 Java Named Query}' class. + * + * + * @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 Java Named Native Query}' class. + * + * + * @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 Java Query Hint}' class. + * + * + * @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 Java Secondary Table}' class. + * + * + * @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; + +/** + * + * The Adapter Factory for the model. + * It provides an adapter createXXX method for each class of the model. + * + * @see org.eclipse.jpt.core.internal.content.java.mappings.JpaJavaMappingsPackage + * @generated + */ +public class JpaJavaMappingsAdapterFactory extends AdapterFactoryImpl +{ + /** + * The cached model package. + * + * + * @generated + */ + protected static JpaJavaMappingsPackage modelPackage; + + /** + * Creates an instance of the adapter factory. + * + * + * @generated + */ + public JpaJavaMappingsAdapterFactory() { + if (modelPackage == null) { + modelPackage = JpaJavaMappingsPackage.eINSTANCE; + } + } + + /** + * Returns whether this factory is applicable for the type of the object. + * + * This implementation returns true if the object is either the model's package or is an instance object of the model. + * + * @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 createXXX methods. + * + * + * @generated + */ + protected JpaJavaMappingsSwitch modelSwitch = new JpaJavaMappingsSwitch() { + @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 target. + * + * + * @param target the object to adapt. + * @return the adapter for the target. + * @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 Java Entity}'. + * + * This default implementation returns null so that we can easily ignore cases; + * it's useful to ignore a case when inheritance will catch all the cases anyway. + * + * @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 Java Mapped Superclass}'. + * + * This default implementation returns null so that we can easily ignore cases; + * it's useful to ignore a case when inheritance will catch all the cases anyway. + * + * @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 Java Embeddable}'. + * + * This default implementation returns null so that we can easily ignore cases; + * it's useful to ignore a case when inheritance will catch all the cases anyway. + * + * @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 Java Null Type Mapping}'. + * + * This default implementation returns null so that we can easily ignore cases; + * it's useful to ignore a case when inheritance will catch all the cases anyway. + * + * @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 Java Null Attribute Mapping}'. + * + * This default implementation returns null so that we can easily ignore cases; + * it's useful to ignore a case when inheritance will catch all the cases anyway. + * + * @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 Java Basic}'. + * + * This default implementation returns null so that we can easily ignore cases; + * it's useful to ignore a case when inheritance will catch all the cases anyway. + * + * @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 Java Id}'. + * + * This default implementation returns null so that we can easily ignore cases; + * it's useful to ignore a case when inheritance will catch all the cases anyway. + * + * @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 Java Transient}'. + * + * This default implementation returns null so that we can easily ignore cases; + * it's useful to ignore a case when inheritance will catch all the cases anyway. + * + * @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 Java Version}'. + * + * This default implementation returns null so that we can easily ignore cases; + * it's useful to ignore a case when inheritance will catch all the cases anyway. + * + * @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 Java Embedded Id}'. + * + * This default implementation returns null so that we can easily ignore cases; + * it's useful to ignore a case when inheritance will catch all the cases anyway. + * + * @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 Java Embedded}'. + * + * This default implementation returns null so that we can easily ignore cases; + * it's useful to ignore a case when inheritance will catch all the cases anyway. + * + * @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 Java Attribute Mapping}'. + * + * This default implementation returns null so that we can easily ignore cases; + * it's useful to ignore a case when inheritance will catch all the cases anyway. + * + * @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 Java Type Mapping}'. + * + * This default implementation returns null so that we can easily ignore cases; + * it's useful to ignore a case when inheritance will catch all the cases anyway. + * + * @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 Abstract Java Table}'. + * + * This default implementation returns null so that we can easily ignore cases; + * it's useful to ignore a case when inheritance will catch all the cases anyway. + * + * @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 Java Table}'. + * + * This default implementation returns null so that we can easily ignore cases; + * it's useful to ignore a case when inheritance will catch all the cases anyway. + * + * @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 Java Column}'. + * + * This default implementation returns null so that we can easily ignore cases; + * it's useful to ignore a case when inheritance will catch all the cases anyway. + * + * @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 Java Relationship Mapping}'. + * + * This default implementation returns null so that we can easily ignore cases; + * it's useful to ignore a case when inheritance will catch all the cases anyway. + * + * @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 Java Single Relationship Mapping}'. + * + * This default implementation returns null so that we can easily ignore cases; + * it's useful to ignore a case when inheritance will catch all the cases anyway. + * + * @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 Java One To Many}'. + * + * This default implementation returns null so that we can easily ignore cases; + * it's useful to ignore a case when inheritance will catch all the cases anyway. + * + * @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 Java Many To Many}'. + * + * This default implementation returns null so that we can easily ignore cases; + * it's useful to ignore a case when inheritance will catch all the cases anyway. + * + * @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 Java Join Table}'. + * + * This default implementation returns null so that we can easily ignore cases; + * it's useful to ignore a case when inheritance will catch all the cases anyway. + * + * @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 Java Named Column}'. + * + * This default implementation returns null so that we can easily ignore cases; + * it's useful to ignore a case when inheritance will catch all the cases anyway. + * + * @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 Abstract Java Column}'. + * + * This default implementation returns null so that we can easily ignore cases; + * it's useful to ignore a case when inheritance will catch all the cases anyway. + * + * @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 Java Join Column}'. + * + * This default implementation returns null so that we can easily ignore cases; + * it's useful to ignore a case when inheritance will catch all the cases anyway. + * + * @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 Java Override}'. + * + * This default implementation returns null so that we can easily ignore cases; + * it's useful to ignore a case when inheritance will catch all the cases anyway. + * + * @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 Java Attribute Override}'. + * + * This default implementation returns null so that we can easily ignore cases; + * it's useful to ignore a case when inheritance will catch all the cases anyway. + * + * @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 Java Association Override}'. + * + * This default implementation returns null so that we can easily ignore cases; + * it's useful to ignore a case when inheritance will catch all the cases anyway. + * + * @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 Java Discriminator Column}'. + * + * This default implementation returns null so that we can easily ignore cases; + * it's useful to ignore a case when inheritance will catch all the cases anyway. + * + * @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 Java Primary Key Join Column}'. + * + * This default implementation returns null so that we can easily ignore cases; + * it's useful to ignore a case when inheritance will catch all the cases anyway. + * + * @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 Java Generated Value}'. + * + * This default implementation returns null so that we can easily ignore cases; + * it's useful to ignore a case when inheritance will catch all the cases anyway. + * + * @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 Java Generator}'. + * + * This default implementation returns null so that we can easily ignore cases; + * it's useful to ignore a case when inheritance will catch all the cases anyway. + * + * @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 Java Table Generator}'. + * + * This default implementation returns null so that we can easily ignore cases; + * it's useful to ignore a case when inheritance will catch all the cases anyway. + * + * @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 Java Sequence Generator}'. + * + * This default implementation returns null so that we can easily ignore cases; + * it's useful to ignore a case when inheritance will catch all the cases anyway. + * + * @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 Java Order By}'. + * + * This default implementation returns null so that we can easily ignore cases; + * it's useful to ignore a case when inheritance will catch all the cases anyway. + * + * @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 Java Abstract Query}'. + * + * This default implementation returns null so that we can easily ignore cases; + * it's useful to ignore a case when inheritance will catch all the cases anyway. + * + * @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 Java Named Query}'. + * + * This default implementation returns null so that we can easily ignore cases; + * it's useful to ignore a case when inheritance will catch all the cases anyway. + * + * @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 Java Named Native Query}'. + * + * This default implementation returns null so that we can easily ignore cases; + * it's useful to ignore a case when inheritance will catch all the cases anyway. + * + * @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 Java Query Hint}'. + * + * This default implementation returns null so that we can easily ignore cases; + * it's useful to ignore a case when inheritance will catch all the cases anyway. + * + * @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 Java Secondary Table}'. + * + * This default implementation returns null so that we can easily ignore cases; + * it's useful to ignore a case when inheritance will catch all the cases anyway. + * + * @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 IJpa EObject}'. + * + * This default implementation returns null so that we can easily ignore cases; + * it's useful to ignore a case when inheritance will catch all the cases anyway. + * + * @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 Jpa EObject}'. + * + * This default implementation returns null so that we can easily ignore cases; + * it's useful to ignore a case when inheritance will catch all the cases anyway. + * + * @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 IJpa Source Object}'. + * + * This default implementation returns null so that we can easily ignore cases; + * it's useful to ignore a case when inheritance will catch all the cases anyway. + * + * @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 Java EObject}'. + * + * This default implementation returns null so that we can easily ignore cases; + * it's useful to ignore a case when inheritance will catch all the cases anyway. + * + * @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 Java Many To One}'. + * + * This default implementation returns null so that we can easily ignore cases; + * it's useful to ignore a case when inheritance will catch all the cases anyway. + * + * @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 Java One To One}'. + * + * This default implementation returns null so that we can easily ignore cases; + * it's useful to ignore a case when inheritance will catch all the cases anyway. + * + * @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 Java Multi Relationship Mapping}'. + * + * This default implementation returns null so that we can easily ignore cases; + * it's useful to ignore a case when inheritance will catch all the cases anyway. + * + * @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 IType Mapping}'. + * + * This default implementation returns null so that we can easily ignore cases; + * it's useful to ignore a case when inheritance will catch all the cases anyway. + * + * @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 IJava Type Mapping}'. + * + * This default implementation returns null so that we can easily ignore cases; + * it's useful to ignore a case when inheritance will catch all the cases anyway. + * + * @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 IEntity}'. + * + * This default implementation returns null so that we can easily ignore cases; + * it's useful to ignore a case when inheritance will catch all the cases anyway. + * + * @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 IMapped Superclass}'. + * + * This default implementation returns null so that we can easily ignore cases; + * it's useful to ignore a case when inheritance will catch all the cases anyway. + * + * @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 IEmbeddable}'. + * + * This default implementation returns null so that we can easily ignore cases; + * it's useful to ignore a case when inheritance will catch all the cases anyway. + * + * @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 IAttribute Mapping}'. + * + * This default implementation returns null so that we can easily ignore cases; + * it's useful to ignore a case when inheritance will catch all the cases anyway. + * + * @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 IJava Attribute Mapping}'. + * + * This default implementation returns null so that we can easily ignore cases; + * it's useful to ignore a case when inheritance will catch all the cases anyway. + * + * @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 IColumn Mapping}'. + * + * This default implementation returns null so that we can easily ignore cases; + * it's useful to ignore a case when inheritance will catch all the cases anyway. + * + * @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 IBasic}'. + * + * This default implementation returns null so that we can easily ignore cases; + * it's useful to ignore a case when inheritance will catch all the cases anyway. + * + * @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 IId}'. + * + * This default implementation returns null so that we can easily ignore cases; + * it's useful to ignore a case when inheritance will catch all the cases anyway. + * + * @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 ITransient}'. + * + * This default implementation returns null so that we can easily ignore cases; + * it's useful to ignore a case when inheritance will catch all the cases anyway. + * + * @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 IVersion}'. + * + * This default implementation returns null so that we can easily ignore cases; + * it's useful to ignore a case when inheritance will catch all the cases anyway. + * + * @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 IEmbedded Id}'. + * + * This default implementation returns null so that we can easily ignore cases; + * it's useful to ignore a case when inheritance will catch all the cases anyway. + * + * @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 IEmbedded}'. + * + * This default implementation returns null so that we can easily ignore cases; + * it's useful to ignore a case when inheritance will catch all the cases anyway. + * + * @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 ITable}'. + * + * This default implementation returns null so that we can easily ignore cases; + * it's useful to ignore a case when inheritance will catch all the cases anyway. + * + * @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 IColumn}'. + * + * This default implementation returns null so that we can easily ignore cases; + * it's useful to ignore a case when inheritance will catch all the cases anyway. + * + * @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 IAbstract Join Column}'. + * + * This default implementation returns null so that we can easily ignore cases; + * it's useful to ignore a case when inheritance will catch all the cases anyway. + * + * @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 IRelationship Mapping}'. + * + * This default implementation returns null so that we can easily ignore cases; + * it's useful to ignore a case when inheritance will catch all the cases anyway. + * + * @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 IMulti Relationship Mapping}'. + * + * This default implementation returns null so that we can easily ignore cases; + * it's useful to ignore a case when inheritance will catch all the cases anyway. + * + * @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 IOne To Many}'. + * + * This default implementation returns null so that we can easily ignore cases; + * it's useful to ignore a case when inheritance will catch all the cases anyway. + * + * @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 IMany To Many}'. + * + * This default implementation returns null so that we can easily ignore cases; + * it's useful to ignore a case when inheritance will catch all the cases anyway. + * + * @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 IJoin Table}'. + * + * This default implementation returns null so that we can easily ignore cases; + * it's useful to ignore a case when inheritance will catch all the cases anyway. + * + * @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 INamed Column}'. + * + * This default implementation returns null so that we can easily ignore cases; + * it's useful to ignore a case when inheritance will catch all the cases anyway. + * + * @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 IAbstract Column}'. + * + * This default implementation returns null so that we can easily ignore cases; + * it's useful to ignore a case when inheritance will catch all the cases anyway. + * + * @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 IJoin Column}'. + * + * This default implementation returns null so that we can easily ignore cases; + * it's useful to ignore a case when inheritance will catch all the cases anyway. + * + * @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 IOverride}'. + * + * This default implementation returns null so that we can easily ignore cases; + * it's useful to ignore a case when inheritance will catch all the cases anyway. + * + * @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 IAttribute Override}'. + * + * This default implementation returns null so that we can easily ignore cases; + * it's useful to ignore a case when inheritance will catch all the cases anyway. + * + * @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 IAssociation Override}'. + * + * This default implementation returns null so that we can easily ignore cases; + * it's useful to ignore a case when inheritance will catch all the cases anyway. + * + * @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 IDiscriminator Column}'. + * + * This default implementation returns null so that we can easily ignore cases; + * it's useful to ignore a case when inheritance will catch all the cases anyway. + * + * @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 IPrimary Key Join Column}'. + * + * This default implementation returns null so that we can easily ignore cases; + * it's useful to ignore a case when inheritance will catch all the cases anyway. + * + * @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 IGenerated Value}'. + * + * This default implementation returns null so that we can easily ignore cases; + * it's useful to ignore a case when inheritance will catch all the cases anyway. + * + * @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 IGenerator}'. + * + * This default implementation returns null so that we can easily ignore cases; + * it's useful to ignore a case when inheritance will catch all the cases anyway. + * + * @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 ITable Generator}'. + * + * This default implementation returns null so that we can easily ignore cases; + * it's useful to ignore a case when inheritance will catch all the cases anyway. + * + * @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 ISequence Generator}'. + * + * This default implementation returns null so that we can easily ignore cases; + * it's useful to ignore a case when inheritance will catch all the cases anyway. + * + * @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 IOrder By}'. + * + * This default implementation returns null so that we can easily ignore cases; + * it's useful to ignore a case when inheritance will catch all the cases anyway. + * + * @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 IQuery}'. + * + * This default implementation returns null so that we can easily ignore cases; + * it's useful to ignore a case when inheritance will catch all the cases anyway. + * + * @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 INamed Query}'. + * + * This default implementation returns null so that we can easily ignore cases; + * it's useful to ignore a case when inheritance will catch all the cases anyway. + * + * @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 INamed Native Query}'. + * + * This default implementation returns null so that we can easily ignore cases; + * it's useful to ignore a case when inheritance will catch all the cases anyway. + * + * @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 IQuery Hint}'. + * + * This default implementation returns null so that we can easily ignore cases; + * it's useful to ignore a case when inheritance will catch all the cases anyway. + * + * @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 ISecondary Table}'. + * + * This default implementation returns null so that we can easily ignore cases; + * it's useful to ignore a case when inheritance will catch all the cases anyway. + * + * @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 ISingle Relationship Mapping}'. + * + * This default implementation returns null so that we can easily ignore cases; + * it's useful to ignore a case when inheritance will catch all the cases anyway. + * + * @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 IMany To One}'. + * + * This default implementation returns null so that we can easily ignore cases; + * it's useful to ignore a case when inheritance will catch all the cases anyway. + * + * @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 IOne To One}'. + * + * This default implementation returns null so that we can easily ignore cases; + * it's useful to ignore a case when inheritance will catch all the cases anyway. + * + * @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 INon Owning Mapping}'. + * + * This default implementation returns null so that we can easily ignore cases; + * it's useful to ignore a case when inheritance will catch all the cases anyway. + * + * @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. + * + * This default implementation returns null. + * + * @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; + +/** + * + * The Switch for the model's inheritance hierarchy. + * It supports the call {@link #doSwitch(EObject) doSwitch(object)} + * to invoke the caseXXX 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. + * + * @see org.eclipse.jpt.core.internal.content.java.mappings.JpaJavaMappingsPackage + * @generated + */ +public class JpaJavaMappingsSwitch +{ + /** + * The cached model package + * + * + * @generated + */ + protected static JpaJavaMappingsPackage modelPackage; + + /** + * Creates an instance of the switch. + * + * + * @generated + */ + public JpaJavaMappingsSwitch() { + if (modelPackage == null) { + modelPackage = JpaJavaMappingsPackage.eINSTANCE; + } + } + + /** + * Calls caseXXX for each class of the model until one returns a non null result; it yields that result. + * + * + * @return the first non-null result returned by a caseXXX call. + * @generated + */ + public T doSwitch(EObject theEObject) { + return doSwitch(theEObject.eClass(), theEObject); + } + + /** + * Calls caseXXX for each class of the model until one returns a non null result; it yields that result. + * + * + * @return the first non-null result returned by a caseXXX call. + * @generated + */ + protected T doSwitch(EClass theEClass, EObject theEObject) { + if (theEClass.eContainer() == modelPackage) { + return doSwitch(theEClass.getClassifierID(), theEObject); + } + else { + List eSuperTypes = theEClass.getESuperTypes(); + return eSuperTypes.isEmpty() ? defaultCase(theEObject) : doSwitch(eSuperTypes.get(0), theEObject); + } + } + + /** + * Calls caseXXX for each class of the model until one returns a non null result; it yields that result. + * + * + * @return the first non-null result returned by a caseXXX 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 'Java Entity'. + * + * This implementation returns null; + * returning a non-null result will terminate the switch. + * + * @param object the target of the switch. + * @return the result of interpretting the object as an instance of 'Java Entity'. + * @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 'Java Mapped Superclass'. + * + * This implementation returns null; + * returning a non-null result will terminate the switch. + * + * @param object the target of the switch. + * @return the result of interpretting the object as an instance of 'Java Mapped Superclass'. + * @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 'Java Embeddable'. + * + * This implementation returns null; + * returning a non-null result will terminate the switch. + * + * @param object the target of the switch. + * @return the result of interpretting the object as an instance of 'Java Embeddable'. + * @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 'Java Null Type Mapping'. + * + * This implementation returns null; + * returning a non-null result will terminate the switch. + * + * @param object the target of the switch. + * @return the result of interpretting the object as an instance of 'Java Null Type Mapping'. + * @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 'Java Null Attribute Mapping'. + * + * This implementation returns null; + * returning a non-null result will terminate the switch. + * + * @param object the target of the switch. + * @return the result of interpretting the object as an instance of 'Java Null Attribute Mapping'. + * @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 'Java Basic'. + * + * This implementation returns null; + * returning a non-null result will terminate the switch. + * + * @param object the target of the switch. + * @return the result of interpretting the object as an instance of 'Java Basic'. + * @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 'Java Id'. + * + * This implementation returns null; + * returning a non-null result will terminate the switch. + * + * @param object the target of the switch. + * @return the result of interpretting the object as an instance of 'Java Id'. + * @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 'Java Transient'. + * + * This implementation returns null; + * returning a non-null result will terminate the switch. + * + * @param object the target of the switch. + * @return the result of interpretting the object as an instance of 'Java Transient'. + * @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 'Java Version'. + * + * This implementation returns null; + * returning a non-null result will terminate the switch. + * + * @param object the target of the switch. + * @return the result of interpretting the object as an instance of 'Java Version'. + * @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 'Java Embedded Id'. + * + * This implementation returns null; + * returning a non-null result will terminate the switch. + * + * @param object the target of the switch. + * @return the result of interpretting the object as an instance of 'Java Embedded Id'. + * @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 'Java Embedded'. + * + * This implementation returns null; + * returning a non-null result will terminate the switch. + * + * @param object the target of the switch. + * @return the result of interpretting the object as an instance of 'Java Embedded'. + * @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 'Java Attribute Mapping'. + * + * This implementation returns null; + * returning a non-null result will terminate the switch. + * + * @param object the target of the switch. + * @return the result of interpretting the object as an instance of 'Java Attribute Mapping'. + * @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 'Java Type Mapping'. + * + * This implementation returns null; + * returning a non-null result will terminate the switch. + * + * @param object the target of the switch. + * @return the result of interpretting the object as an instance of 'Java Type Mapping'. + * @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 'Abstract Java Table'. + * + * This implementation returns null; + * returning a non-null result will terminate the switch. + * + * @param object the target of the switch. + * @return the result of interpretting the object as an instance of 'Abstract Java Table'. + * @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 'Java Table'. + * + * This implementation returns null; + * returning a non-null result will terminate the switch. + * + * @param object the target of the switch. + * @return the result of interpretting the object as an instance of 'Java Table'. + * @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 'Java Column'. + * + * This implementation returns null; + * returning a non-null result will terminate the switch. + * + * @param object the target of the switch. + * @return the result of interpretting the object as an instance of 'Java Column'. + * @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 'Java Relationship Mapping'. + * + * This implementation returns null; + * returning a non-null result will terminate the switch. + * + * @param object the target of the switch. + * @return the result of interpretting the object as an instance of 'Java Relationship Mapping'. + * @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 'Java Single Relationship Mapping'. + * + * This implementation returns null; + * returning a non-null result will terminate the switch. + * + * @param object the target of the switch. + * @return the result of interpretting the object as an instance of 'Java Single Relationship Mapping'. + * @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 'Java One To Many'. + * + * This implementation returns null; + * returning a non-null result will terminate the switch. + * + * @param object the target of the switch. + * @return the result of interpretting the object as an instance of 'Java One To Many'. + * @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 'Java Many To Many'. + * + * This implementation returns null; + * returning a non-null result will terminate the switch. + * + * @param object the target of the switch. + * @return the result of interpretting the object as an instance of 'Java Many To Many'. + * @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 'Java Join Table'. + * + * This implementation returns null; + * returning a non-null result will terminate the switch. + * + * @param object the target of the switch. + * @return the result of interpretting the object as an instance of 'Java Join Table'. + * @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 'Java Named Column'. + * + * This implementation returns null; + * returning a non-null result will terminate the switch. + * + * @param object the target of the switch. + * @return the result of interpretting the object as an instance of 'Java Named Column'. + * @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 'Abstract Java Column'. + * + * This implementation returns null; + * returning a non-null result will terminate the switch. + * + * @param object the target of the switch. + * @return the result of interpretting the object as an instance of 'Abstract Java Column'. + * @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 'Java Join Column'. + * + * This implementation returns null; + * returning a non-null result will terminate the switch. + * + * @param object the target of the switch. + * @return the result of interpretting the object as an instance of 'Java Join Column'. + * @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 'Java Override'. + * + * This implementation returns null; + * returning a non-null result will terminate the switch. + * + * @param object the target of the switch. + * @return the result of interpretting the object as an instance of 'Java Override'. + * @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 'Java Attribute Override'. + * + * This implementation returns null; + * returning a non-null result will terminate the switch. + * + * @param object the target of the switch. + * @return the result of interpretting the object as an instance of 'Java Attribute Override'. + * @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 'Java Association Override'. + * + * This implementation returns null; + * returning a non-null result will terminate the switch. + * + * @param object the target of the switch. + * @return the result of interpretting the object as an instance of 'Java Association Override'. + * @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 'Java Discriminator Column'. + * + * This implementation returns null; + * returning a non-null result will terminate the switch. + * + * @param object the target of the switch. + * @return the result of interpretting the object as an instance of 'Java Discriminator Column'. + * @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 'Java Primary Key Join Column'. + * + * This implementation returns null; + * returning a non-null result will terminate the switch. + * + * @param object the target of the switch. + * @return the result of interpretting the object as an instance of 'Java Primary Key Join Column'. + * @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 'Java Generated Value'. + * + * This implementation returns null; + * returning a non-null result will terminate the switch. + * + * @param object the target of the switch. + * @return the result of interpretting the object as an instance of 'Java Generated Value'. + * @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 'Java Generator'. + * + * This implementation returns null; + * returning a non-null result will terminate the switch. + * + * @param object the target of the switch. + * @return the result of interpretting the object as an instance of 'Java Generator'. + * @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 'Java Table Generator'. + * + * This implementation returns null; + * returning a non-null result will terminate the switch. + * + * @param object the target of the switch. + * @return the result of interpretting the object as an instance of 'Java Table Generator'. + * @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 'Java Sequence Generator'. + * + * This implementation returns null; + * returning a non-null result will terminate the switch. + * + * @param object the target of the switch. + * @return the result of interpretting the object as an instance of 'Java Sequence Generator'. + * @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 'Java Order By'. + * + * This implementation returns null; + * returning a non-null result will terminate the switch. + * + * @param object the target of the switch. + * @return the result of interpretting the object as an instance of 'Java Order By'. + * @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 'Java Abstract Query'. + * + * This implementation returns null; + * returning a non-null result will terminate the switch. + * + * @param object the target of the switch. + * @return the result of interpretting the object as an instance of 'Java Abstract Query'. + * @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 'Java Named Query'. + * + * This implementation returns null; + * returning a non-null result will terminate the switch. + * + * @param object the target of the switch. + * @return the result of interpretting the object as an instance of 'Java Named Query'. + * @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 'Java Named Native Query'. + * + * This implementation returns null; + * returning a non-null result will terminate the switch. + * + * @param object the target of the switch. + * @return the result of interpretting the object as an instance of 'Java Named Native Query'. + * @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 'Java Query Hint'. + * + * This implementation returns null; + * returning a non-null result will terminate the switch. + * + * @param object the target of the switch. + * @return the result of interpretting the object as an instance of 'Java Query Hint'. + * @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 'Java Secondary Table'. + * + * This implementation returns null; + * returning a non-null result will terminate the switch. + * + * @param object the target of the switch. + * @return the result of interpretting the object as an instance of 'Java Secondary Table'. + * @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 'IJpa EObject'. + * + * This implementation returns null; + * returning a non-null result will terminate the switch. + * + * @param object the target of the switch. + * @return the result of interpretting the object as an instance of 'IJpa EObject'. + * @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 'Jpa EObject'. + * + * This implementation returns null; + * returning a non-null result will terminate the switch. + * + * @param object the target of the switch. + * @return the result of interpretting the object as an instance of 'Jpa EObject'. + * @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 'IJpa Source Object'. + * + * This implementation returns null; + * returning a non-null result will terminate the switch. + * + * @param object the target of the switch. + * @return the result of interpretting the object as an instance of 'IJpa Source Object'. + * @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 'Java EObject'. + * + * This implementation returns null; + * returning a non-null result will terminate the switch. + * + * @param object the target of the switch. + * @return the result of interpretting the object as an instance of 'Java EObject'. + * @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 'Java Many To One'. + * + * This implementation returns null; + * returning a non-null result will terminate the switch. + * + * @param object the target of the switch. + * @return the result of interpretting the object as an instance of 'Java Many To One'. + * @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 'Java One To One'. + * + * This implementation returns null; + * returning a non-null result will terminate the switch. + * + * @param object the target of the switch. + * @return the result of interpretting the object as an instance of 'Java One To One'. + * @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 'Java Multi Relationship Mapping'. + * + * This implementation returns null; + * returning a non-null result will terminate the switch. + * + * @param object the target of the switch. + * @return the result of interpretting the object as an instance of 'Java Multi Relationship Mapping'. + * @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 'IType Mapping'. + * + * This implementation returns null; + * returning a non-null result will terminate the switch. + * + * @param object the target of the switch. + * @return the result of interpretting the object as an instance of 'IType Mapping'. + * @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 'IJava Type Mapping'. + * + * This implementation returns null; + * returning a non-null result will terminate the switch. + * + * @param object the target of the switch. + * @return the result of interpretting the object as an instance of 'IJava Type Mapping'. + * @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 'IEntity'. + * + * This implementation returns null; + * returning a non-null result will terminate the switch. + * + * @param object the target of the switch. + * @return the result of interpretting the object as an instance of 'IEntity'. + * @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 'IMapped Superclass'. + * + * This implementation returns null; + * returning a non-null result will terminate the switch. + * + * @param object the target of the switch. + * @return the result of interpretting the object as an instance of 'IMapped Superclass'. + * @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 'IEmbeddable'. + * + * This implementation returns null; + * returning a non-null result will terminate the switch. + * + * @param object the target of the switch. + * @return the result of interpretting the object as an instance of 'IEmbeddable'. + * @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 'IAttribute Mapping'. + * + * This implementation returns null; + * returning a non-null result will terminate the switch. + * + * @param object the target of the switch. + * @return the result of interpretting the object as an instance of 'IAttribute Mapping'. + * @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 'IJava Attribute Mapping'. + * + * This implementation returns null; + * returning a non-null result will terminate the switch. + * + * @param object the target of the switch. + * @return the result of interpretting the object as an instance of 'IJava Attribute Mapping'. + * @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 'IColumn Mapping'. + * + * This implementation returns null; + * returning a non-null result will terminate the switch. + * + * @param object the target of the switch. + * @return the result of interpretting the object as an instance of 'IColumn Mapping'. + * @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 'IBasic'. + * + * This implementation returns null; + * returning a non-null result will terminate the switch. + * + * @param object the target of the switch. + * @return the result of interpretting the object as an instance of 'IBasic'. + * @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 'IId'. + * + * This implementation returns null; + * returning a non-null result will terminate the switch. + * + * @param object the target of the switch. + * @return the result of interpretting the object as an instance of 'IId'. + * @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 'ITransient'. + * + * This implementation returns null; + * returning a non-null result will terminate the switch. + * + * @param object the target of the switch. + * @return the result of interpretting the object as an instance of 'ITransient'. + * @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 'IVersion'. + * + * This implementation returns null; + * returning a non-null result will terminate the switch. + * + * @param object the target of the switch. + * @return the result of interpretting the object as an instance of 'IVersion'. + * @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 'IEmbedded Id'. + * + * This implementation returns null; + * returning a non-null result will terminate the switch. + * + * @param object the target of the switch. + * @return the result of interpretting the object as an instance of 'IEmbedded Id'. + * @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 'IEmbedded'. + * + * This implementation returns null; + * returning a non-null result will terminate the switch. + * + * @param object the target of the switch. + * @return the result of interpretting the object as an instance of 'IEmbedded'. + * @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 'ITable'. + * + * This implementation returns null; + * returning a non-null result will terminate the switch. + * + * @param object the target of the switch. + * @return the result of interpretting the object as an instance of 'ITable'. + * @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 'IColumn'. + * + * This implementation returns null; + * returning a non-null result will terminate the switch. + * + * @param object the target of the switch. + * @return the result of interpretting the object as an instance of 'IColumn'. + * @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 'IAbstract Join Column'. + * + * This implementation returns null; + * returning a non-null result will terminate the switch. + * + * @param object the target of the switch. + * @return the result of interpretting the object as an instance of 'IAbstract Join Column'. + * @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 'IRelationship Mapping'. + * + * This implementation returns null; + * returning a non-null result will terminate the switch. + * + * @param object the target of the switch. + * @return the result of interpretting the object as an instance of 'IRelationship Mapping'. + * @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 'IMulti Relationship Mapping'. + * + * This implementation returns null; + * returning a non-null result will terminate the switch. + * + * @param object the target of the switch. + * @return the result of interpretting the object as an instance of 'IMulti Relationship Mapping'. + * @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 'IOne To Many'. + * + * This implementation returns null; + * returning a non-null result will terminate the switch. + * + * @param object the target of the switch. + * @return the result of interpretting the object as an instance of 'IOne To Many'. + * @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 'IMany To Many'. + * + * This implementation returns null; + * returning a non-null result will terminate the switch. + * + * @param object the target of the switch. + * @return the result of interpretting the object as an instance of 'IMany To Many'. + * @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 'IJoin Table'. + * + * This implementation returns null; + * returning a non-null result will terminate the switch. + * + * @param object the target of the switch. + * @return the result of interpretting the object as an instance of 'IJoin Table'. + * @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 'INamed Column'. + * + * This implementation returns null; + * returning a non-null result will terminate the switch. + * + * @param object the target of the switch. + * @return the result of interpretting the object as an instance of 'INamed Column'. + * @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 'IAbstract Column'. + * + * This implementation returns null; + * returning a non-null result will terminate the switch. + * + * @param object the target of the switch. + * @return the result of interpretting the object as an instance of 'IAbstract Column'. + * @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 'IJoin Column'. + * + * This implementation returns null; + * returning a non-null result will terminate the switch. + * + * @param object the target of the switch. + * @return the result of interpretting the object as an instance of 'IJoin Column'. + * @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 'IOverride'. + * + * This implementation returns null; + * returning a non-null result will terminate the switch. + * + * @param object the target of the switch. + * @return the result of interpretting the object as an instance of 'IOverride'. + * @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 'IAttribute Override'. + * + * This implementation returns null; + * returning a non-null result will terminate the switch. + * + * @param object the target of the switch. + * @return the result of interpretting the object as an instance of 'IAttribute Override'. + * @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 'IAssociation Override'. + * + * This implementation returns null; + * returning a non-null result will terminate the switch. + * + * @param object the target of the switch. + * @return the result of interpretting the object as an instance of 'IAssociation Override'. + * @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 'IDiscriminator Column'. + * + * This implementation returns null; + * returning a non-null result will terminate the switch. + * + * @param object the target of the switch. + * @return the result of interpretting the object as an instance of 'IDiscriminator Column'. + * @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 'IPrimary Key Join Column'. + * + * This implementation returns null; + * returning a non-null result will terminate the switch. + * + * @param object the target of the switch. + * @return the result of interpretting the object as an instance of 'IPrimary Key Join Column'. + * @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 'IGenerated Value'. + * + * This implementation returns null; + * returning a non-null result will terminate the switch. + * + * @param object the target of the switch. + * @return the result of interpretting the object as an instance of 'IGenerated Value'. + * @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 'IGenerator'. + * + * This implementation returns null; + * returning a non-null result will terminate the switch. + * + * @param object the target of the switch. + * @return the result of interpretting the object as an instance of 'IGenerator'. + * @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 'ITable Generator'. + * + * This implementation returns null; + * returning a non-null result will terminate the switch. + * + * @param object the target of the switch. + * @return the result of interpretting the object as an instance of 'ITable Generator'. + * @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 'ISequence Generator'. + * + * This implementation returns null; + * returning a non-null result will terminate the switch. + * + * @param object the target of the switch. + * @return the result of interpretting the object as an instance of 'ISequence Generator'. + * @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 'IOrder By'. + * + * This implementation returns null; + * returning a non-null result will terminate the switch. + * + * @param object the target of the switch. + * @return the result of interpretting the object as an instance of 'IOrder By'. + * @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 'IQuery'. + * + * This implementation returns null; + * returning a non-null result will terminate the switch. + * + * @param object the target of the switch. + * @return the result of interpretting the object as an instance of 'IQuery'. + * @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 'INamed Query'. + * + * This implementation returns null; + * returning a non-null result will terminate the switch. + * + * @param object the target of the switch. + * @return the result of interpretting the object as an instance of 'INamed Query'. + * @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 'INamed Native Query'. + * + * This implementation returns null; + * returning a non-null result will terminate the switch. + * + * @param object the target of the switch. + * @return the result of interpretting the object as an instance of 'INamed Native Query'. + * @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 'IQuery Hint'. + * + * This implementation returns null; + * returning a non-null result will terminate the switch. + * + * @param object the target of the switch. + * @return the result of interpretting the object as an instance of 'IQuery Hint'. + * @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 'ISecondary Table'. + * + * This implementation returns null; + * returning a non-null result will terminate the switch. + * + * @param object the target of the switch. + * @return the result of interpretting the object as an instance of 'ISecondary Table'. + * @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 'ISingle Relationship Mapping'. + * + * This implementation returns null; + * returning a non-null result will terminate the switch. + * + * @param object the target of the switch. + * @return the result of interpretting the object as an instance of 'ISingle Relationship Mapping'. + * @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 'IMany To One'. + * + * This implementation returns null; + * returning a non-null result will terminate the switch. + * + * @param object the target of the switch. + * @return the result of interpretting the object as an instance of 'IMany To One'. + * @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 'IOne To One'. + * + * This implementation returns null; + * returning a non-null result will terminate the switch. + * + * @param object the target of the switch. + * @return the result of interpretting the object as an instance of 'IOne To One'. + * @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 'INon Owning Mapping'. + * + * This implementation returns null; + * returning a non-null result will terminate the switch. + * + * @param object the target of the switch. + * @return the result of interpretting the object as an instance of 'INon Owning Mapping'. + * @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 'EObject'. + * + * This implementation returns null; + * returning a non-null result will terminate the switch, but this is the last case anyway. + * + * @param object the target of the switch. + * @return the result of interpretting the object as an instance of 'EObject'. + * @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; + +/** + * + * The Adapter Factory for the model. + * It provides an adapter createXXX method for each class of the model. + * + * @see org.eclipse.jpt.core.internal.content.java.JpaJavaPackage + * @generated + */ +public class JpaJavaAdapterFactory extends AdapterFactoryImpl +{ + /** + * The cached model package. + * + * + * @generated + */ + protected static JpaJavaPackage modelPackage; + + /** + * Creates an instance of the adapter factory. + * + * + * @generated + */ + public JpaJavaAdapterFactory() { + if (modelPackage == null) { + modelPackage = JpaJavaPackage.eINSTANCE; + } + } + + /** + * Returns whether this factory is applicable for the type of the object. + * + * This implementation returns true if the object is either the model's package or is an instance object of the model. + * + * @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 createXXX methods. + * + * + * @generated + */ + protected JpaJavaSwitch modelSwitch = new JpaJavaSwitch() { + @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 target. + * + * + * @param target the object to adapt. + * @return the adapter for the target. + * @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 IJava Attribute Mapping}'. + * + * This default implementation returns null so that we can easily ignore cases; + * it's useful to ignore a case when inheritance will catch all the cases anyway. + * + * @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 IJava Type Mapping}'. + * + * This default implementation returns null so that we can easily ignore cases; + * it's useful to ignore a case when inheritance will catch all the cases anyway. + * + * @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 Java EObject}'. + * + * This default implementation returns null so that we can easily ignore cases; + * it's useful to ignore a case when inheritance will catch all the cases anyway. + * + * @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 Jpa Compilation Unit}'. + * + * This default implementation returns null so that we can easily ignore cases; + * it's useful to ignore a case when inheritance will catch all the cases anyway. + * + * @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 Java Persistent Type}'. + * + * This default implementation returns null so that we can easily ignore cases; + * it's useful to ignore a case when inheritance will catch all the cases anyway. + * + * @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 Java Persistent Attribute}'. + * + * This default implementation returns null so that we can easily ignore cases; + * it's useful to ignore a case when inheritance will catch all the cases anyway. + * + * @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 IJpa EObject}'. + * + * This default implementation returns null so that we can easily ignore cases; + * it's useful to ignore a case when inheritance will catch all the cases anyway. + * + * @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 IJpa Source Object}'. + * + * This default implementation returns null so that we can easily ignore cases; + * it's useful to ignore a case when inheritance will catch all the cases anyway. + * + * @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 IJpa Content Node}'. + * + * This default implementation returns null so that we can easily ignore cases; + * it's useful to ignore a case when inheritance will catch all the cases anyway. + * + * @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 IJpa Root Content Node}'. + * + * This default implementation returns null so that we can easily ignore cases; + * it's useful to ignore a case when inheritance will catch all the cases anyway. + * + * @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 IPersistent Type}'. + * + * This default implementation returns null so that we can easily ignore cases; + * it's useful to ignore a case when inheritance will catch all the cases anyway. + * + * @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 IPersistent Attribute}'. + * + * This default implementation returns null so that we can easily ignore cases; + * it's useful to ignore a case when inheritance will catch all the cases anyway. + * + * @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 IAttribute Mapping}'. + * + * This default implementation returns null so that we can easily ignore cases; + * it's useful to ignore a case when inheritance will catch all the cases anyway. + * + * @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 IType Mapping}'. + * + * This default implementation returns null so that we can easily ignore cases; + * it's useful to ignore a case when inheritance will catch all the cases anyway. + * + * @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 Jpa EObject}'. + * + * This default implementation returns null so that we can easily ignore cases; + * it's useful to ignore a case when inheritance will catch all the cases anyway. + * + * @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. + * + * This default implementation returns null. + * + * @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; + +/** + * + * The Switch for the model's inheritance hierarchy. + * It supports the call {@link #doSwitch(EObject) doSwitch(object)} + * to invoke the caseXXX 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. + * + * @see org.eclipse.jpt.core.internal.content.java.JpaJavaPackage + * @generated + */ +public class JpaJavaSwitch +{ + /** + * The cached model package + * + * + * @generated + */ + protected static JpaJavaPackage modelPackage; + + /** + * Creates an instance of the switch. + * + * + * @generated + */ + public JpaJavaSwitch() { + if (modelPackage == null) { + modelPackage = JpaJavaPackage.eINSTANCE; + } + } + + /** + * Calls caseXXX for each class of the model until one returns a non null result; it yields that result. + * + * + * @return the first non-null result returned by a caseXXX call. + * @generated + */ + public T doSwitch(EObject theEObject) { + return doSwitch(theEObject.eClass(), theEObject); + } + + /** + * Calls caseXXX for each class of the model until one returns a non null result; it yields that result. + * + * + * @return the first non-null result returned by a caseXXX call. + * @generated + */ + protected T doSwitch(EClass theEClass, EObject theEObject) { + if (theEClass.eContainer() == modelPackage) { + return doSwitch(theEClass.getClassifierID(), theEObject); + } + else { + List eSuperTypes = theEClass.getESuperTypes(); + return eSuperTypes.isEmpty() ? defaultCase(theEObject) : doSwitch(eSuperTypes.get(0), theEObject); + } + } + + /** + * Calls caseXXX for each class of the model until one returns a non null result; it yields that result. + * + * + * @return the first non-null result returned by a caseXXX 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 'IJava Attribute Mapping'. + * + * This implementation returns null; + * returning a non-null result will terminate the switch. + * + * @param object the target of the switch. + * @return the result of interpretting the object as an instance of 'IJava Attribute Mapping'. + * @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 'IJava Type Mapping'. + * + * This implementation returns null; + * returning a non-null result will terminate the switch. + * + * @param object the target of the switch. + * @return the result of interpretting the object as an instance of 'IJava Type Mapping'. + * @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 'Java EObject'. + * + * This implementation returns null; + * returning a non-null result will terminate the switch. + * + * @param object the target of the switch. + * @return the result of interpretting the object as an instance of 'Java EObject'. + * @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 'Jpa Compilation Unit'. + * + * This implementation returns null; + * returning a non-null result will terminate the switch. + * + * @param object the target of the switch. + * @return the result of interpretting the object as an instance of 'Jpa Compilation Unit'. + * @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 'Java Persistent Type'. + * + * This implementation returns null; + * returning a non-null result will terminate the switch. + * + * @param object the target of the switch. + * @return the result of interpretting the object as an instance of 'Java Persistent Type'. + * @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 'Java Persistent Attribute'. + * + * This implementation returns null; + * returning a non-null result will terminate the switch. + * + * @param object the target of the switch. + * @return the result of interpretting the object as an instance of 'Java Persistent Attribute'. + * @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 'IJpa EObject'. + * + * This implementation returns null; + * returning a non-null result will terminate the switch. + * + * @param object the target of the switch. + * @return the result of interpretting the object as an instance of 'IJpa EObject'. + * @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 'IJpa Source Object'. + * + * This implementation returns null; + * returning a non-null result will terminate the switch. + * + * @param object the target of the switch. + * @return the result of interpretting the object as an instance of 'IJpa Source Object'. + * @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 'IJpa Content Node'. + * + * This implementation returns null; + * returning a non-null result will terminate the switch. + * + * @param object the target of the switch. + * @return the result of interpretting the object as an instance of 'IJpa Content Node'. + * @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 'IJpa Root Content Node'. + * + * This implementation returns null; + * returning a non-null result will terminate the switch. + * + * @param object the target of the switch. + * @return the result of interpretting the object as an instance of 'IJpa Root Content Node'. + * @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 'IPersistent Type'. + * + * This implementation returns null; + * returning a non-null result will terminate the switch. + * + * @param object the target of the switch. + * @return the result of interpretting the object as an instance of 'IPersistent Type'. + * @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 'IPersistent Attribute'. + * + * This implementation returns null; + * returning a non-null result will terminate the switch. + * + * @param object the target of the switch. + * @return the result of interpretting the object as an instance of 'IPersistent Attribute'. + * @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 'IAttribute Mapping'. + * + * This implementation returns null; + * returning a non-null result will terminate the switch. + * + * @param object the target of the switch. + * @return the result of interpretting the object as an instance of 'IAttribute Mapping'. + * @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 'IType Mapping'. + * + * This implementation returns null; + * returning a non-null result will terminate the switch. + * + * @param object the target of the switch. + * @return the result of interpretting the object as an instance of 'IType Mapping'. + * @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 'Jpa EObject'. + * + * This implementation returns null; + * returning a non-null result will terminate the switch. + * + * @param object the target of the switch. + * @return the result of interpretting the object as an instance of 'Jpa EObject'. + * @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 'EObject'. + * + * This implementation returns null; + * returning a non-null result will terminate the switch, but this is the last case anyway. + * + * @param object the target of the switch. + * @return the result of interpretting the object as an instance of 'EObject'. + * @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; + +/** + * + * A representation of the model object 'Abstract Xml Column'. + * + * + *

+ * The following features are supported: + *

    + *
  • {@link org.eclipse.jpt.core.internal.content.orm.AbstractXmlColumn#getUniqueForXml Unique For Xml}
  • + *
  • {@link org.eclipse.jpt.core.internal.content.orm.AbstractXmlColumn#getNullableForXml Nullable For Xml}
  • + *
  • {@link org.eclipse.jpt.core.internal.content.orm.AbstractXmlColumn#getInsertableForXml Insertable For Xml}
  • + *
  • {@link org.eclipse.jpt.core.internal.content.orm.AbstractXmlColumn#getUpdatableForXml Updatable For Xml}
  • + *
  • {@link org.eclipse.jpt.core.internal.content.orm.AbstractXmlColumn#getSpecifiedTableForXml Specified Table For Xml}
  • + *
+ *

+ * + * @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() Unique}' attribute. + * + * + * @see #getUnique() + * @generated + * @ordered + */ + protected static final DefaultFalseBoolean UNIQUE_EDEFAULT = DefaultFalseBoolean.DEFAULT; + + /** + * The cached value of the '{@link #getUnique() Unique}' attribute. + * + * + * @see #getUnique() + * @generated + * @ordered + */ + protected DefaultFalseBoolean unique = UNIQUE_EDEFAULT; + + /** + * The default value of the '{@link #getNullable() Nullable}' attribute. + * + * + * @see #getNullable() + * @generated + * @ordered + */ + protected static final DefaultTrueBoolean NULLABLE_EDEFAULT = DefaultTrueBoolean.DEFAULT; + + /** + * The cached value of the '{@link #getNullable() Nullable}' attribute. + * + * + * @see #getNullable() + * @generated + * @ordered + */ + protected DefaultTrueBoolean nullable = NULLABLE_EDEFAULT; + + /** + * The default value of the '{@link #getInsertable() Insertable}' attribute. + * + * + * @see #getInsertable() + * @generated + * @ordered + */ + protected static final DefaultTrueBoolean INSERTABLE_EDEFAULT = DefaultTrueBoolean.DEFAULT; + + /** + * The cached value of the '{@link #getInsertable() Insertable}' attribute. + * + * + * @see #getInsertable() + * @generated + * @ordered + */ + protected DefaultTrueBoolean insertable = INSERTABLE_EDEFAULT; + + /** + * The default value of the '{@link #getUpdatable() Updatable}' attribute. + * + * + * @see #getUpdatable() + * @generated + * @ordered + */ + protected static final DefaultTrueBoolean UPDATABLE_EDEFAULT = DefaultTrueBoolean.DEFAULT; + + /** + * The cached value of the '{@link #getUpdatable() Updatable}' attribute. + * + * + * @see #getUpdatable() + * @generated + * @ordered + */ + protected DefaultTrueBoolean updatable = UPDATABLE_EDEFAULT; + + /** + * The default value of the '{@link #getTable() Table}' attribute. + * + * + * @see #getTable() + * @generated + * @ordered + */ + protected static final String TABLE_EDEFAULT = null; + + /** + * The default value of the '{@link #getSpecifiedTable() Specified Table}' attribute. + * + * + * @see #getSpecifiedTable() + * @generated + * @ordered + */ + protected static final String SPECIFIED_TABLE_EDEFAULT = null; + + /** + * The cached value of the '{@link #getSpecifiedTable() Specified Table}' attribute. + * + * + * @see #getSpecifiedTable() + * @generated + * @ordered + */ + protected String specifiedTable = SPECIFIED_TABLE_EDEFAULT; + + /** + * The default value of the '{@link #getDefaultTable() Default Table}' attribute. + * + * + * @see #getDefaultTable() + * @generated + * @ordered + */ + protected static final String DEFAULT_TABLE_EDEFAULT = null; + + /** + * The cached value of the '{@link #getDefaultTable() Default Table}' attribute. + * + * + * @see #getDefaultTable() + * @generated + * @ordered + */ + protected String defaultTable = DEFAULT_TABLE_EDEFAULT; + + /** + * The default value of the '{@link #getUniqueForXml() Unique For Xml}' attribute. + * + * + * @see #getUniqueForXml() + * @generated + * @ordered + */ + protected static final DefaultFalseBoolean UNIQUE_FOR_XML_EDEFAULT = DefaultFalseBoolean.DEFAULT; + + /** + * The default value of the '{@link #getNullableForXml() Nullable For Xml}' attribute. + * + * + * @see #getNullableForXml() + * @generated + * @ordered + */ + protected static final DefaultTrueBoolean NULLABLE_FOR_XML_EDEFAULT = DefaultTrueBoolean.DEFAULT; + + /** + * The default value of the '{@link #getInsertableForXml() Insertable For Xml}' attribute. + * + * + * @see #getInsertableForXml() + * @generated + * @ordered + */ + protected static final DefaultTrueBoolean INSERTABLE_FOR_XML_EDEFAULT = DefaultTrueBoolean.DEFAULT; + + /** + * The default value of the '{@link #getUpdatableForXml() Updatable For Xml}' attribute. + * + * + * @see #getUpdatableForXml() + * @generated + * @ordered + */ + protected static final DefaultTrueBoolean UPDATABLE_FOR_XML_EDEFAULT = DefaultTrueBoolean.DEFAULT; + + /** + * The default value of the '{@link #getSpecifiedTableForXml() Specified Table For Xml}' attribute. + * + * + * @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); + } + + /** + * + * + * @generated + */ + @Override + protected EClass eStaticClass() { + return OrmPackage.Literals.ABSTRACT_XML_COLUMN; + } + + /** + * Returns the value of the 'Unique' attribute. + * The literals are from the enumeration {@link org.eclipse.jpt.core.internal.mappings.DefaultFalseBoolean}. + * + *

+ * If the meaning of the 'Unique' attribute isn't clear, + * there really should be more of a description here... + *

+ * + * @return the value of the 'Unique' 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 Unique}' attribute. + * + * + * @param value the new value of the 'Unique' 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 'Nullable' attribute. + * The literals are from the enumeration {@link org.eclipse.jpt.core.internal.mappings.DefaultTrueBoolean}. + * + *

+ * If the meaning of the 'Nullable' attribute isn't clear, + * there really should be more of a description here... + *

+ * + * @return the value of the 'Nullable' 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 Nullable}' attribute. + * + * + * @param value the new value of the 'Nullable' 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 'Insertable' attribute. + * The literals are from the enumeration {@link org.eclipse.jpt.core.internal.mappings.DefaultTrueBoolean}. + * + *

+ * If the meaning of the 'Insertable' attribute isn't clear, + * there really should be more of a description here... + *

+ * + * @return the value of the 'Insertable' 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 Insertable}' attribute. + * + * + * @param value the new value of the 'Insertable' 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 'Updatable' attribute. + * The literals are from the enumeration {@link org.eclipse.jpt.core.internal.mappings.DefaultTrueBoolean}. + * + *

+ * If the meaning of the 'Updatable' attribute isn't clear, + * there really should be more of a description here... + *

+ * + * @return the value of the 'Updatable' 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 Updatable}' attribute. + * + * + * @param value the new value of the 'Updatable' 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 'Table' attribute. + * + *

+ * If the meaning of the 'Table' attribute isn't clear, + * there really should be more of a description here... + *

+ * + * @return the value of the 'Table' 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 'Specified Table' attribute. + * + *

+ * If the meaning of the 'Specified Table' attribute isn't clear, + * there really should be more of a description here... + *

+ * + * @return the value of the 'Specified Table' 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 Specified Table}' attribute. + * + * + * @param value the new value of the 'Specified Table' 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 'Default Table' attribute. + * + *

+ * If the meaning of the 'Default Table' attribute isn't clear, + * there really should be more of a description here... + *

+ * + * @return the value of the 'Default Table' 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 'Unique For Xml' attribute. + * The literals are from the enumeration {@link org.eclipse.jpt.core.internal.mappings.DefaultFalseBoolean}. + * + *

+ * If the meaning of the 'Unique For Xml' attribute isn't clear, + * there really should be more of a description here... + *

+ * + * @return the value of the 'Unique For Xml' 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 Unique For Xml}' attribute. + * + * + * @param value the new value of the 'Unique For Xml' 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 'Nullable For Xml' attribute. + * The literals are from the enumeration {@link org.eclipse.jpt.core.internal.mappings.DefaultTrueBoolean}. + * + *

+ * If the meaning of the 'Nullable For Xml' attribute isn't clear, + * there really should be more of a description here... + *

+ * + * @return the value of the 'Nullable For Xml' 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 Nullable For Xml}' attribute. + * + * + * @param value the new value of the 'Nullable For Xml' 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 'Insertable For Xml' attribute. + * The literals are from the enumeration {@link org.eclipse.jpt.core.internal.mappings.DefaultTrueBoolean}. + * + *

+ * If the meaning of the 'Insertable For Xml' attribute isn't clear, + * there really should be more of a description here... + *

+ * + * @return the value of the 'Insertable For Xml' 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 Insertable For Xml}' attribute. + * + * + * @param value the new value of the 'Insertable For Xml' 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 'Updatable For Xml' attribute. + * The literals are from the enumeration {@link org.eclipse.jpt.core.internal.mappings.DefaultTrueBoolean}. + * + *

+ * If the meaning of the 'Updatable For Xml' attribute isn't clear, + * there really should be more of a description here... + *

+ * + * @return the value of the 'Updatable For Xml' 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 Updatable For Xml}' attribute. + * + * + * @param value the new value of the 'Updatable For Xml' 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 'Column Definition For Xml' attribute. + * + *

+ * If the meaning of the 'Column Definition For Xml' attribute isn't clear, + * there really should be more of a description here... + *

+ * + * @return the value of the 'Column Definition For Xml' 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 'Specified Table For Xml' attribute. + * + *

+ * If the meaning of the 'Specified Table For Xml' attribute isn't clear, + * there really should be more of a description here... + *

+ * + * @return the value of the 'Specified Table For Xml' 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 Specified Table For Xml}' attribute. + * + * + * @param value the new value of the 'Specified Table For Xml' 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)); + } + + /** + * + * + * @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); + } + + /** + * + * + * @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); + } + + /** + * + * + * @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); + } + + /** + * + * + * @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); + } + + /** + * + * + * @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); + } + + /** + * + * + * @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); + } + + /** + * + * + * @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; + +/** + * + * A representation of the model object 'Abstract Xml Named Column'. + * + * + *

+ * The following features are supported: + *

    + *
  • {@link org.eclipse.jpt.core.internal.content.orm.AbstractXmlNamedColumn#getSpecifiedNameForXml Specified Name For Xml}
  • + *
  • {@link org.eclipse.jpt.core.internal.content.orm.AbstractXmlNamedColumn#getColumnDefinitionForXml Column Definition For Xml}
  • + *
+ *

+ * + * @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() Name}' attribute. + * + * + * @see #getName() + * @generated + * @ordered + */ + protected static final String NAME_EDEFAULT = null; + + /** + * The default value of the '{@link #getSpecifiedName() Specified Name}' attribute. + * + * + * @see #getSpecifiedName() + * @generated + * @ordered + */ + protected static final String SPECIFIED_NAME_EDEFAULT = null; + + /** + * The cached value of the '{@link #getSpecifiedName() Specified Name}' attribute. + * + * + * @see #getSpecifiedName() + * @generated + * @ordered + */ + protected String specifiedName = SPECIFIED_NAME_EDEFAULT; + + /** + * The default value of the '{@link #getDefaultName() Default Name}' attribute. + * + * + * @see #getDefaultName() + * @generated + * @ordered + */ + protected static final String DEFAULT_NAME_EDEFAULT = null; + + /** + * The cached value of the '{@link #getDefaultName() Default Name}' attribute. + * + * + * @see #getDefaultName() + * @generated + * @ordered + */ + protected String defaultName = DEFAULT_NAME_EDEFAULT; + + /** + * The default value of the '{@link #getColumnDefinition() Column Definition}' attribute. + * + * + * @see #getColumnDefinition() + * @generated + * @ordered + */ + protected static final String COLUMN_DEFINITION_EDEFAULT = null; + + /** + * The cached value of the '{@link #getColumnDefinition() Column Definition}' attribute. + * + * + * @see #getColumnDefinition() + * @generated + * @ordered + */ + protected String columnDefinition = COLUMN_DEFINITION_EDEFAULT; + + /** + * The default value of the '{@link #getSpecifiedNameForXml() Specified Name For Xml}' attribute. + * + * + * @see #getSpecifiedNameForXml() + * @generated + * @ordered + */ + protected static final String SPECIFIED_NAME_FOR_XML_EDEFAULT = null; + + /** + * The default value of the '{@link #getColumnDefinitionForXml() Column Definition For Xml}' attribute. + * + * + * @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; + } + + /** + * + * + * @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 'Specified Name' attribute. + * + *

+ * If the meaning of the 'Specified Name' attribute isn't clear, + * there really should be more of a description here... + *

+ * + * @return the value of the 'Specified Name' 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 Specified Name}' attribute. + * + * + * @param value the new value of the 'Specified Name' 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 'Default Name' attribute. + * + *

+ * If the meaning of the 'Default Name' attribute isn't clear, + * there really should be more of a description here... + *

+ * + * @return the value of the 'Default Name' 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 'Column Definition' attribute. + * + *

+ * If the meaning of the 'Column Definition' attribute isn't clear, + * there really should be more of a description here... + *

+ * + * @return the value of the 'Column Definition' 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 Column Definition}' attribute. + * + * + * @param value the new value of the 'Column Definition' 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)); + } + + /** + * + * + * @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); + } + + /** + * + * + * @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); + } + + /** + * + * + * @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); + } + + /** + * + * + * @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); + } + + /** + * + * + * @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); + } + + /** + * + * + * @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); + } + + /** + * + * + * @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; + +/** + * + * A representation of the model object 'Abstract Xml Query'. + * + * + * + * @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() Name}' attribute. + * + * + * @see #getName() + * @generated + * @ordered + */ + protected static final String NAME_EDEFAULT = null; + + /** + * The cached value of the '{@link #getName() Name}' attribute. + * + * + * @see #getName() + * @generated + * @ordered + */ + protected String name = NAME_EDEFAULT; + + /** + * The default value of the '{@link #getQuery() Query}' attribute. + * + * + * @see #getQuery() + * @generated + * @ordered + */ + protected static final String QUERY_EDEFAULT = null; + + /** + * The cached value of the '{@link #getQuery() Query}' attribute. + * + * + * @see #getQuery() + * @generated + * @ordered + */ + protected String query = QUERY_EDEFAULT; + + /** + * The cached value of the '{@link #getHints() Hints}' containment reference list. + * + * + * @see #getHints() + * @generated + * @ordered + */ + protected EList hints; + + /** + * + * + * @generated + */ + protected AbstractXmlQuery() { + super(); + } + + /** + * + * + * @generated + */ + @Override + protected EClass eStaticClass() { + return OrmPackage.Literals.ABSTRACT_XML_QUERY; + } + + /** + * Returns the value of the 'Name' attribute. + * + *

+ * If the meaning of the 'Name' attribute isn't clear, + * there really should be more of a description here... + *

+ * + * @return the value of the 'Name' 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 Name}' attribute. + * + * + * @param value the new value of the 'Name' 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 'Query' attribute. + * + *

+ * If the meaning of the 'Query' attribute isn't clear, + * there really should be more of a description here... + *

+ * + * @return the value of the 'Query' 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 Query}' attribute. + * + * + * @param value the new value of the 'Query' 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 'Hints' containment reference list. + * The list contents are of type {@link org.eclipse.jpt.core.internal.mappings.IQueryHint}. + * + *

+ * If the meaning of the 'Hints' containment reference list isn't clear, + * there really should be more of a description here... + *

+ * + * @return the value of the 'Hints' 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 getHints() { + if (hints == null) { + hints = new EObjectContainmentEList(IQueryHint.class, this, OrmPackage.ABSTRACT_XML_QUERY__HINTS); + } + return hints; + } + + /** + * + * + * @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); + } + + /** + * + * + * @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); + } + + /** + * + * + * @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) newValue); + return; + } + super.eSet(featureID, newValue); + } + + /** + * + * + * @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); + } + + /** + * + * + * @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); + } + + /** + * + * + * @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); + } + + /** + * + * + * @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); + } + + /** + * + * + * @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; + +/** + * + * A representation of the model object 'Abstract Xml Table'. + * + * + *

+ * The following features are supported: + *

    + *
  • {@link org.eclipse.jpt.core.internal.content.orm.AbstractXmlTable#getSpecifiedNameForXml Specified Name For Xml}
  • + *
  • {@link org.eclipse.jpt.core.internal.content.orm.AbstractXmlTable#getSpecifiedCatalogForXml Specified Catalog For Xml}
  • + *
  • {@link org.eclipse.jpt.core.internal.content.orm.AbstractXmlTable#getSpecifiedSchemaForXml Specified Schema For Xml}
  • + *
+ *

+ * + * @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() Name}' attribute. + * + * + * @see #getName() + * @generated + * @ordered + */ + protected static final String NAME_EDEFAULT = null; + + /** + * The default value of the '{@link #getSpecifiedName() Specified Name}' attribute. + * + * + * @see #getSpecifiedName() + * @generated + * @ordered + */ + protected static final String SPECIFIED_NAME_EDEFAULT = null; + + /** + * The cached value of the '{@link #getSpecifiedName() Specified Name}' attribute. + * + * + * @see #getSpecifiedName() + * @generated + * @ordered + */ + protected String specifiedName = SPECIFIED_NAME_EDEFAULT; + + /** + * The default value of the '{@link #getDefaultName() Default Name}' attribute. + * + * + * @see #getDefaultName() + * @generated + * @ordered + */ + protected static final String DEFAULT_NAME_EDEFAULT = null; + + /** + * The cached value of the '{@link #getDefaultName() Default Name}' attribute. + * + * + * @see #getDefaultName() + * @generated + * @ordered + */ + protected String defaultName = DEFAULT_NAME_EDEFAULT; + + /** + * The default value of the '{@link #getCatalog() Catalog}' attribute. + * + * + * @see #getCatalog() + * @generated + * @ordered + */ + protected static final String CATALOG_EDEFAULT = null; + + /** + * The default value of the '{@link #getSpecifiedCatalog() Specified Catalog}' attribute. + * + * + * @see #getSpecifiedCatalog() + * @generated + * @ordered + */ + protected static final String SPECIFIED_CATALOG_EDEFAULT = null; + + /** + * The cached value of the '{@link #getSpecifiedCatalog() Specified Catalog}' attribute. + * + * + * @see #getSpecifiedCatalog() + * @generated + * @ordered + */ + protected String specifiedCatalog = SPECIFIED_CATALOG_EDEFAULT; + + /** + * The default value of the '{@link #getDefaultCatalog() Default Catalog}' attribute. + * + * + * @see #getDefaultCatalog() + * @generated + * @ordered + */ + protected static final String DEFAULT_CATALOG_EDEFAULT = null; + + /** + * The cached value of the '{@link #getDefaultCatalog() Default Catalog}' attribute. + * + * + * @see #getDefaultCatalog() + * @generated + * @ordered + */ + protected String defaultCatalog = DEFAULT_CATALOG_EDEFAULT; + + /** + * The default value of the '{@link #getSchema() Schema}' attribute. + * + * + * @see #getSchema() + * @generated + * @ordered + */ + protected static final String SCHEMA_EDEFAULT = null; + + /** + * The default value of the '{@link #getSpecifiedSchema() Specified Schema}' attribute. + * + * + * @see #getSpecifiedSchema() + * @generated + * @ordered + */ + protected static final String SPECIFIED_SCHEMA_EDEFAULT = null; + + /** + * The cached value of the '{@link #getSpecifiedSchema() Specified Schema}' attribute. + * + * + * @see #getSpecifiedSchema() + * @generated + * @ordered + */ + protected String specifiedSchema = SPECIFIED_SCHEMA_EDEFAULT; + + /** + * The default value of the '{@link #getDefaultSchema() Default Schema}' attribute. + * + * + * @see #getDefaultSchema() + * @generated + * @ordered + */ + protected static final String DEFAULT_SCHEMA_EDEFAULT = null; + + /** + * The cached value of the '{@link #getDefaultSchema() Default Schema}' attribute. + * + * + * @see #getDefaultSchema() + * @generated + * @ordered + */ + protected String defaultSchema = DEFAULT_SCHEMA_EDEFAULT; + + /** + * The default value of the '{@link #getSpecifiedNameForXml() Specified Name For Xml}' attribute. + * + * + * @see #getSpecifiedNameForXml() + * @generated + * @ordered + */ + protected static final String SPECIFIED_NAME_FOR_XML_EDEFAULT = null; + + /** + * The default value of the '{@link #getSpecifiedCatalogForXml() Specified Catalog For Xml}' attribute. + * + * + * @see #getSpecifiedCatalogForXml() + * @generated + * @ordered + */ + protected static final String SPECIFIED_CATALOG_FOR_XML_EDEFAULT = null; + + /** + * The default value of the '{@link #getSpecifiedSchemaForXml() Specified Schema For Xml}' attribute. + * + * + * @see #getSpecifiedSchemaForXml() + * @generated + * @ordered + */ + protected static final String SPECIFIED_SCHEMA_FOR_XML_EDEFAULT = null; + + /** + * + * + * @generated + */ + protected AbstractXmlTable() { + super(); + } + + protected AbstractXmlTable(Owner owner) { + super(); + this.owner = owner; + } + + @Override + protected void addInsignificantXmlFeatureIdsTo(Set 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); + } + + /** + * + * + * @generated + */ + @Override + protected EClass eStaticClass() { + return OrmPackage.Literals.ABSTRACT_XML_TABLE; + } + + /** + * Returns the value of the 'Name' attribute. + * + *

+ * If the meaning of the 'Name' attribute isn't clear, + * there really should be more of a description here... + *

+ * + * @return the value of the 'Name' 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 'Specified Name' attribute. + * + *

+ * If the meaning of the 'Specified Name' attribute isn't clear, + * there really should be more of a description here... + *

+ * + * @return the value of the 'Specified Name' 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 Specified Name}' attribute. + * + * + * @param value the new value of the 'Specified Name' 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 'Default Name' attribute. + * + *

+ * If the meaning of the 'Default Name' attribute isn't clear, + * there really should be more of a description here... + *

+ * + * @return the value of the 'Default Name' 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 'Catalog' attribute. + * + *

+ * If the meaning of the 'Catalog' attribute isn't clear, + * there really should be more of a description here... + *

+ * + * @return the value of the 'Catalog' 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 'Specified Catalog' attribute. + * + *

+ * If the meaning of the 'Specified Catalog' attribute isn't clear, + * there really should be more of a description here... + *

+ * + * @return the value of the 'Specified Catalog' 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 Specified Catalog}' attribute. + * + * + * @param value the new value of the 'Specified Catalog' 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 'Default Catalog' attribute. + * + *

+ * If the meaning of the 'Default Catalog' attribute isn't clear, + * there really should be more of a description here... + *

+ * + * @return the value of the 'Default Catalog' 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 'Schema' attribute. + * + *

+ * If the meaning of the 'Schema' attribute isn't clear, + * there really should be more of a description here... + *

+ * + * @return the value of the 'Schema' 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 'Specified Schema' attribute. + * + *

+ * If the meaning of the 'Specified Schema' attribute isn't clear, + * there really should be more of a description here... + *

+ * + * @return the value of the 'Specified Schema' 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 Specified Schema}' attribute. + * + * + * @param value the new value of the 'Specified Schema' 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 'Default Schema' attribute. + * + *

+ * If the meaning of the 'Default Schema' attribute isn't clear, + * there really should be more of a description here... + *

+ * + * @return the value of the 'Default Schema' 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 'Specified Name For Xml' attribute. + * + *

+ * If the meaning of the 'Specified Name For Xml' attribute isn't clear, + * there really should be more of a description here... + *

+ * + * @return the value of the 'Specified Name For Xml' 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 Specified Name For Xml}' attribute. + * + * + * @param value the new value of the 'Specified Name For Xml' 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 'Specified Catalog For Xml' attribute. + * + *

+ * If the meaning of the 'Specified Catalog For Xml' attribute isn't clear, + * there really should be more of a description here... + *

+ * + * @return the value of the 'Specified Catalog For Xml' 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 Specified Catalog For Xml}' attribute. + * + * + * @param value the new value of the 'Specified Catalog For Xml' 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 'Specified Schema For Xml' attribute. + * + *

+ * If the meaning of the 'Specified Schema For Xml' attribute isn't clear, + * there really should be more of a description here... + *

+ * + * @return the value of the 'Specified Schema For Xml' 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 Specified Schema For Xml}' attribute. + * + * + * @param value the new value of the 'Specified Schema For Xml' 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)); + } + + /** + * + * + * @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); + } + + /** + * + * + * @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); + } + + /** + * + * + * @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); + } + + /** + * + * + * @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); + } + + /** + * + * + * @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); + } + + /** + * + * + * @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); + } + + /** + * + * + * @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; + +/** + * + * A representation of the model object 'Entity Mappings'. + * + * + *

+ * The following features are supported: + *

    + *
  • {@link org.eclipse.jpt.core.internal.content.orm.EntityMappings#getPersistenceUnitMetadata Persistence Unit Metadata}
  • + *
  • {@link org.eclipse.jpt.core.internal.content.orm.EntityMappings#getPackage Package}
  • + *
+ *

+ * + * @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 'Persistence Unit Metadata' reference. + * The default value is "". + * + *

+ * If the meaning of the 'Persistence Unit Metadata' reference isn't clear, + * there really should be more of a description here... + *

+ * + * @return the value of the 'Persistence Unit Metadata' 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 'Package' attribute. + * + *

+ * If the meaning of the 'Package' attribute isn't clear, + * there really should be more of a description here... + *

+ * + * @return the value of the 'Package' 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 Package}' attribute. + * + * + * @param value the new value of the 'Package' 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; + +/** + * + * A representation of the model object 'Entity Mappings For Xml'. + * + * + *

+ * The following features are supported: + *

    + *
  • {@link org.eclipse.jpt.core.internal.content.orm.EntityMappingsForXml#getPersistenceUnitMetadataForXml Persistence Unit Metadata For Xml}
  • + *
  • {@link org.eclipse.jpt.core.internal.content.orm.EntityMappingsForXml#getPackageForXml Package For Xml}
  • + *
+ *

+ * + * @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 'Persistence Unit Metadata For Xml' reference. + * + *

+ * If the meaning of the 'Persistence Unit Metadata For Xml' reference isn't clear, + * there really should be more of a description here... + *

+ * + * @return the value of the 'Persistence Unit Metadata For Xml' 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 Persistence Unit Metadata For Xml}' reference. + * + * + * @param value the new value of the 'Persistence Unit Metadata For Xml' reference. + * @see #getPersistenceUnitMetadataForXml() + * @generated + */ + void setPersistenceUnitMetadataForXml(PersistenceUnitMetadataForXml value); + + /** + * Returns the value of the 'Package For Xml' attribute. + * + *

+ * If the meaning of the 'Package For Xml' attribute isn't clear, + * there really should be more of a description here... + *

+ * + * @return the value of the 'Package For Xml' 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 Package For Xml}' attribute. + * + * + * @param value the new value of the 'Package For Xml' 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; + +/** + * + * A representation of the model object 'Entity Mappings Internal'. + * + * + *

+ * The following features are supported: + *

    + *
  • {@link org.eclipse.jpt.core.internal.content.orm.EntityMappingsInternal#getRoot Root}
  • + *
  • {@link org.eclipse.jpt.core.internal.content.orm.EntityMappingsInternal#getVersion Version}
  • + *
  • {@link org.eclipse.jpt.core.internal.content.orm.EntityMappingsInternal#getDescription Description}
  • + *
  • {@link org.eclipse.jpt.core.internal.content.orm.EntityMappingsInternal#getPersistenceUnitMetadataInternal Persistence Unit Metadata Internal}
  • + *
  • {@link org.eclipse.jpt.core.internal.content.orm.EntityMappingsInternal#getPackageInternal Package Internal}
  • + *
  • {@link org.eclipse.jpt.core.internal.content.orm.EntityMappingsInternal#getDefaultSchema Default Schema}
  • + *
  • {@link org.eclipse.jpt.core.internal.content.orm.EntityMappingsInternal#getSpecifiedSchema Specified Schema}
  • + *
  • {@link org.eclipse.jpt.core.internal.content.orm.EntityMappingsInternal#getSchema Schema}
  • + *
  • {@link org.eclipse.jpt.core.internal.content.orm.EntityMappingsInternal#getDefaultCatalog Default Catalog}
  • + *
  • {@link org.eclipse.jpt.core.internal.content.orm.EntityMappingsInternal#getSpecifiedCatalog Specified Catalog}
  • + *
  • {@link org.eclipse.jpt.core.internal.content.orm.EntityMappingsInternal#getCatalog Catalog}
  • + *
  • {@link org.eclipse.jpt.core.internal.content.orm.EntityMappingsInternal#getDefaultAccess Default Access}
  • + *
  • {@link org.eclipse.jpt.core.internal.content.orm.EntityMappingsInternal#getSpecifiedAccess Specified Access}
  • + *
  • {@link org.eclipse.jpt.core.internal.content.orm.EntityMappingsInternal#getAccess Access}
  • + *
  • {@link org.eclipse.jpt.core.internal.content.orm.EntityMappingsInternal#getTypeMappings Type Mappings}
  • + *
  • {@link org.eclipse.jpt.core.internal.content.orm.EntityMappingsInternal#getPersistentTypes Persistent Types}
  • + *
  • {@link org.eclipse.jpt.core.internal.content.orm.EntityMappingsInternal#getSequenceGenerators Sequence Generators}
  • + *
  • {@link org.eclipse.jpt.core.internal.content.orm.EntityMappingsInternal#getTableGenerators Table Generators}
  • + *
  • {@link org.eclipse.jpt.core.internal.content.orm.EntityMappingsInternal#getNamedQueries Named Queries}
  • + *
  • {@link org.eclipse.jpt.core.internal.content.orm.EntityMappingsInternal#getNamedNativeQueries Named Native Queries}
  • + *
+ *

+ * + * @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() Package For Xml}' attribute. + * + * + * @see #getPackageForXml() + * @generated + * @ordered + */ + protected static final String PACKAGE_FOR_XML_EDEFAULT = null; + + /** + * The default value of the '{@link #getPackage() Package}' attribute. + * + * + * @see #getPackage() + * @generated + * @ordered + */ + protected static final String PACKAGE_EDEFAULT = null; + + /** + * The cached value of the '{@link #getRoot() Root}' reference. + * + * + * @see #getRoot() + * @generated + * @ordered + */ + protected XmlRootContentNode root; + + /** + * The default value of the '{@link #getVersion() Version}' attribute. + * + * + * @see #getVersion() + * @generated + * @ordered + */ + protected static final String VERSION_EDEFAULT = null; + + /** + * The cached value of the '{@link #getVersion() Version}' attribute. + * + * + * @see #getVersion() + * @generated + * @ordered + */ + protected String version = VERSION_EDEFAULT; + + /** + * The default value of the '{@link #getDescription() Description}' attribute. + * + * + * @see #getDescription() + * @generated + * @ordered + */ + protected static final String DESCRIPTION_EDEFAULT = null; + + /** + * The cached value of the '{@link #getDescription() Description}' attribute. + * + * + * @see #getDescription() + * @generated + * @ordered + */ + protected String description = DESCRIPTION_EDEFAULT; + + /** + * The cached value of the '{@link #getPersistenceUnitMetadataInternal() Persistence Unit Metadata Internal}' containment reference. + * + * + * @see #getPersistenceUnitMetadataInternal() + * @generated + * @ordered + */ + protected PersistenceUnitMetadataInternal persistenceUnitMetadataInternal; + + /** + * The default value of the '{@link #getPackageInternal() Package Internal}' attribute. + * + * + * @see #getPackageInternal() + * @generated + * @ordered + */ + protected static final String PACKAGE_INTERNAL_EDEFAULT = null; + + /** + * The cached value of the '{@link #getPackageInternal() Package Internal}' attribute. + * + * + * @see #getPackageInternal() + * @generated + * @ordered + */ + protected String packageInternal = PACKAGE_INTERNAL_EDEFAULT; + + /** + * The default value of the '{@link #getDefaultSchema() Default Schema}' attribute. + * + * + * @see #getDefaultSchema() + * @generated + * @ordered + */ + protected static final String DEFAULT_SCHEMA_EDEFAULT = null; + + /** + * The cached value of the '{@link #getDefaultSchema() Default Schema}' attribute. + * + * + * @see #getDefaultSchema() + * @generated + * @ordered + */ + protected String defaultSchema = DEFAULT_SCHEMA_EDEFAULT; + + /** + * The default value of the '{@link #getSpecifiedSchema() Specified Schema}' attribute. + * + * + * @see #getSpecifiedSchema() + * @generated + * @ordered + */ + protected static final String SPECIFIED_SCHEMA_EDEFAULT = null; + + /** + * The cached value of the '{@link #getSpecifiedSchema() Specified Schema}' attribute. + * + * + * @see #getSpecifiedSchema() + * @generated + * @ordered + */ + protected String specifiedSchema = SPECIFIED_SCHEMA_EDEFAULT; + + /** + * The default value of the '{@link #getSchema() Schema}' attribute. + * + * + * @see #getSchema() + * @generated + * @ordered + */ + protected static final String SCHEMA_EDEFAULT = null; + + /** + * The default value of the '{@link #getDefaultCatalog() Default Catalog}' attribute. + * + * + * @see #getDefaultCatalog() + * @generated + * @ordered + */ + protected static final String DEFAULT_CATALOG_EDEFAULT = null; + + /** + * The cached value of the '{@link #getDefaultCatalog() Default Catalog}' attribute. + * + * + * @see #getDefaultCatalog() + * @generated + * @ordered + */ + protected String defaultCatalog = DEFAULT_CATALOG_EDEFAULT; + + /** + * The default value of the '{@link #getSpecifiedCatalog() Specified Catalog}' attribute. + * + * + * @see #getSpecifiedCatalog() + * @generated + * @ordered + */ + protected static final String SPECIFIED_CATALOG_EDEFAULT = null; + + /** + * The cached value of the '{@link #getSpecifiedCatalog() Specified Catalog}' attribute. + * + * + * @see #getSpecifiedCatalog() + * @generated + * @ordered + */ + protected String specifiedCatalog = SPECIFIED_CATALOG_EDEFAULT; + + /** + * The default value of the '{@link #getCatalog() Catalog}' attribute. + * + * + * @see #getCatalog() + * @generated + * @ordered + */ + protected static final String CATALOG_EDEFAULT = null; + + /** + * The default value of the '{@link #getDefaultAccess() Default Access}' attribute. + * + * + * @see #getDefaultAccess() + * @generated + * @ordered + */ + protected static final AccessType DEFAULT_ACCESS_EDEFAULT = AccessType.DEFAULT; + + /** + * The cached value of the '{@link #getDefaultAccess() Default Access}' attribute. + * + * + * @see #getDefaultAccess() + * @generated + * @ordered + */ + protected AccessType defaultAccess = DEFAULT_ACCESS_EDEFAULT; + + /** + * The default value of the '{@link #getSpecifiedAccess() Specified Access}' attribute. + * + * + * @see #getSpecifiedAccess() + * @generated + * @ordered + */ + protected static final AccessType SPECIFIED_ACCESS_EDEFAULT = AccessType.DEFAULT; + + /** + * The cached value of the '{@link #getSpecifiedAccess() Specified Access}' attribute. + * + * + * @see #getSpecifiedAccess() + * @generated + * @ordered + */ + protected AccessType specifiedAccess = SPECIFIED_ACCESS_EDEFAULT; + + /** + * The default value of the '{@link #getAccess() Access}' attribute. + * + * + * @see #getAccess() + * @generated + * @ordered + */ + protected static final AccessType ACCESS_EDEFAULT = AccessType.DEFAULT; + + /** + * The cached value of the '{@link #getTypeMappings() Type Mappings}' containment reference list. + * + * + * @see #getTypeMappings() + * @generated + * @ordered + */ + protected EList typeMappings; + + /** + * The cached value of the '{@link #getPersistentTypes() Persistent Types}' reference list. + * + * + * @see #getPersistentTypes() + * @generated + * @ordered + */ + protected EList persistentTypes; + + /** + * The cached value of the '{@link #getSequenceGenerators() Sequence Generators}' containment reference list. + * + * + * @see #getSequenceGenerators() + * @generated + * @ordered + */ + protected EList sequenceGenerators; + + /** + * The cached value of the '{@link #getTableGenerators() Table Generators}' containment reference list. + * + * + * @see #getTableGenerators() + * @generated + * @ordered + */ + protected EList tableGenerators; + + /** + * The cached value of the '{@link #getNamedQueries() Named Queries}' containment reference list. + * + * + * @see #getNamedQueries() + * @generated + * @ordered + */ + protected EList namedQueries; + + /** + * The cached value of the '{@link #getNamedNativeQueries() Named Native Queries}' containment reference list. + * + * + * @see #getNamedNativeQueries() + * @generated + * @ordered + */ + protected EList namedNativeQueries; + + /** + * + * + * @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 insignificantFeatureIds) { + super.addInsignificantFeatureIdsTo(insignificantFeatureIds); + insignificantFeatureIds.add(OrmPackage.ENTITY_MAPPINGS_INTERNAL__PERSISTENT_TYPES); + } + + /** + * + * + * @generated + */ + @Override + protected EClass eStaticClass() { + return OrmPackage.Literals.ENTITY_MAPPINGS_INTERNAL; + } + + /** + * Returns the value of the 'Access' attribute. + * The literals are from the enumeration {@link org.eclipse.jpt.core.internal.content.orm.AccessType}. + * + *

+ * If the meaning of the 'Access' attribute isn't clear, + * there really should be more of a description here... + *

+ * + * @return the value of the 'Access' 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 'Persistence Unit Metadata For Xml' reference. + * + *

+ * 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. + *

+ * + * @return the value of the 'Persistence Unit Metadata For Xml' 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 Persistence Unit Metadata For Xml}' reference. + * + * + * @param value the new value of the 'Persistence Unit Metadata For Xml' 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 'Package For Xml' attribute. + * + *

+ * If the meaning of the 'Package For Xml' attribute isn't clear, + * there really should be more of a description here... + *

+ * + * @return the value of the 'Package For Xml' 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 Package For Xml}' attribute. + * + * + * @param value the new value of the 'Package For Xml' 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 'Persistence Unit Metadata' containment reference. + * The default value is "". + * + *

+ * If the meaning of the 'Persistence Unit Metadata' containment reference isn't clear, + * there really should be more of a description here... + *

+ * + * @return the value of the 'Persistence Unit Metadata' 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 'Root' reference. + * The default value is "". + * It is bidirectional and its opposite is '{@link org.eclipse.jpt.core.internal.content.orm.XmlRootContentNode#getEntityMappings Entity Mappings}'. + * + *

+ * If the meaning of the 'Root' reference isn't clear, + * there really should be more of a description here... + *

+ * + * @return the value of the 'Root' 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; + } + + /** + * + * + * @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 Root}' reference. + * + * + * @param value the new value of the 'Root' 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 'Version' attribute. + * + *

+ * If the meaning of the 'Version' attribute isn't clear, + * there really should be more of a description here... + *

+ * + * @return the value of the 'Version' 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 Version}' attribute. + * + * + * @param value the new value of the 'Version' 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 'Description' attribute. + * + *

+ * If the meaning of the 'Description' attribute isn't clear, + * there really should be more of a description here... + *

+ * + * @return the value of the 'Description' 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 Description}' attribute. + * + * + * @param value the new value of the 'Description' 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 'Persistence Unit Metadata Internal' containment reference. + * The default value is "". + * + *

+ * If the meaning of the 'Persistence Unit Metadata Internal' containment reference isn't clear, + * there really should be more of a description here... + *

+ * + * @return the value of the 'Persistence Unit Metadata Internal' 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; + } + + /** + * + * + * @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 'Package Internal' attribute. + * + *

+ * If the meaning of the 'Package Internal' attribute isn't clear, + * there really should be more of a description here... + *

+ * + * @return the value of the 'Package Internal' 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 Package Internal}' attribute. + * + * + * @param value the new value of the 'Package Internal' 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 'Default Schema' attribute. + * + *

+ * If the meaning of the 'Default Schema' attribute isn't clear, + * there really should be more of a description here... + *

+ * + * @return the value of the 'Default Schema' 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 Default Schema}' attribute. + * + * + * @param value the new value of the 'Default Schema' 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 'Specified Schema' attribute. + * + *

+ * If the meaning of the 'Specified Schema' attribute isn't clear, + * there really should be more of a description here... + *

+ * + * @return the value of the 'Specified Schema' 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 Specified Schema}' attribute. + * + * + * @param value the new value of the 'Specified Schema' 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 'Package' attribute. + * + *

+ * If the meaning of the 'Package' attribute isn't clear, + * there really should be more of a description here... + *

+ * + * @return the value of the 'Package' 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 Package}' attribute. + * + * + * @param value the new value of the 'Package' attribute. + * @see #getPackage() + * @generated NOT + */ + public void setPackage(String newPackage) { + if (newPackage == "") { + newPackage = null; + } + setPackageInternal(newPackage); + setPackageForXml(newPackage); + } + + /** + * Returns the value of the 'Schema' attribute. + * + *

+ * If the meaning of the 'Schema' attribute isn't clear, + * there really should be more of a description here... + *

+ * + * @return the value of the 'Schema' 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 'Default Catalog' attribute. + * + *

+ * If the meaning of the 'Default Catalog' attribute isn't clear, + * there really should be more of a description here... + *

+ * + * @return the value of the 'Default Catalog' 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 Default Catalog}' attribute. + * + * + * @param value the new value of the 'Default Catalog' 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 'Specified Catalog' attribute. + * + *

+ * If the meaning of the 'Specified Catalog' attribute isn't clear, + * there really should be more of a description here... + *

+ * + * @return the value of the 'Specified Catalog' 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 Specified Catalog}' attribute. + * + * + * @param value the new value of the 'Specified Catalog' 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 'Catalog' attribute. + * + *

+ * If the meaning of the 'Catalog' attribute isn't clear, + * there really should be more of a description here... + *

+ * + * @return the value of the 'Catalog' 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 'Default Access' attribute. + * The literals are from the enumeration {@link org.eclipse.jpt.core.internal.AccessType}. + * + *

+ * If the meaning of the 'Default Access' attribute isn't clear, + * there really should be more of a description here... + *

+ * + * @return the value of the 'Default Access' 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 Default Access}' attribute. + * + * + * @param value the new value of the 'Default Access' 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 'Specified Access' attribute. + * The literals are from the enumeration {@link org.eclipse.jpt.core.internal.AccessType}. + * + *

+ * If the meaning of the 'Specified Access' attribute isn't clear, + * there really should be more of a description here... + *

+ * + * @return the value of the 'Specified Access' 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 Specified Access}' attribute. + * + * + * @param value the new value of the 'Specified Access' 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 'Type Mappings' containment reference list. + * The list contents are of type {@link org.eclipse.jpt.core.internal.content.orm.XmlTypeMapping}. + * + *

+ * If the meaning of the 'Type Mappings' containment reference list isn't clear, + * there really should be more of a description here... + *

+ * + * @return the value of the 'Type Mappings' 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 getTypeMappingsGen() { + if (typeMappings == null) { + typeMappings = new EObjectContainmentEList(XmlTypeMapping.class, this, OrmPackage.ENTITY_MAPPINGS_INTERNAL__TYPE_MAPPINGS); + } + return typeMappings; + } + + public EList getTypeMappings() { + if (typeMappings == null) { + typeMappings = new TypeMappingsList(); + } + return getTypeMappingsGen(); + } + + /** + * Returns the value of the 'Persistent Types' reference list. + * The list contents are of type {@link org.eclipse.jpt.core.internal.content.orm.XmlPersistentType}. + * + *

+ * If the meaning of the 'Persistent Types' reference list isn't clear, + * there really should be more of a description here... + *

+ * + * @return the value of the 'Persistent Types' 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 getPersistentTypes() { + if (persistentTypes == null) { + persistentTypes = new EObjectEList(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 'Table Generators' containment reference list. + * The list contents are of type {@link org.eclipse.jpt.core.internal.content.orm.XmlTableGenerator}. + * + *

+ * If the meaning of the 'Table Generators' reference list isn't clear, + * there really should be more of a description here... + *

+ * + * @return the value of the 'Table Generators' 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 getTableGenerators() { + if (tableGenerators == null) { + tableGenerators = new EObjectContainmentEList(XmlTableGenerator.class, this, OrmPackage.ENTITY_MAPPINGS_INTERNAL__TABLE_GENERATORS); + } + return tableGenerators; + } + + /** + * Returns the value of the 'Named Queries' containment reference list. + * The list contents are of type {@link org.eclipse.jpt.core.internal.content.orm.XmlNamedQuery}. + * + *

+ * If the meaning of the 'Named Queries' containment reference list isn't clear, + * there really should be more of a description here... + *

+ * + * @return the value of the 'Named Queries' 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 getNamedQueries() { + if (namedQueries == null) { + namedQueries = new EObjectContainmentEList(XmlNamedQuery.class, this, OrmPackage.ENTITY_MAPPINGS_INTERNAL__NAMED_QUERIES); + } + return namedQueries; + } + + /** + * Returns the value of the 'Named Native Queries' containment reference list. + * The list contents are of type {@link org.eclipse.jpt.core.internal.content.orm.XmlNamedNativeQuery}. + * + *

+ * If the meaning of the 'Named Native Queries' containment reference list isn't clear, + * there really should be more of a description here... + *

+ * + * @return the value of the 'Named Native Queries' 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 getNamedNativeQueries() { + if (namedNativeQueries == null) { + namedNativeQueries = new EObjectContainmentEList(XmlNamedNativeQuery.class, this, OrmPackage.ENTITY_MAPPINGS_INTERNAL__NAMED_NATIVE_QUERIES); + } + return namedNativeQueries; + } + + /** + * Returns the value of the 'Sequence Generators' containment reference list. + * The list contents are of type {@link org.eclipse.jpt.core.internal.content.orm.XmlSequenceGenerator}. + * + *

+ * If the meaning of the 'Sequence Generators' reference list isn't clear, + * there really should be more of a description here... + *

+ * + * @return the value of the 'Sequence Generators' 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 getSequenceGenerators() { + if (sequenceGenerators == null) { + sequenceGenerators = new EObjectContainmentEList(XmlSequenceGenerator.class, this, OrmPackage.ENTITY_MAPPINGS_INTERNAL__SEQUENCE_GENERATORS); + } + return sequenceGenerators; + } + + /** + * + * + * @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); + } + + /** + * + * + * @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); + } + + /** + * + * + * @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); + } + + /** + * + * + * @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) newValue); + return; + case OrmPackage.ENTITY_MAPPINGS_INTERNAL__PERSISTENT_TYPES : + getPersistentTypes().clear(); + getPersistentTypes().addAll((Collection) newValue); + return; + case OrmPackage.ENTITY_MAPPINGS_INTERNAL__SEQUENCE_GENERATORS : + getSequenceGenerators().clear(); + getSequenceGenerators().addAll((Collection) newValue); + return; + case OrmPackage.ENTITY_MAPPINGS_INTERNAL__TABLE_GENERATORS : + getTableGenerators().clear(); + getTableGenerators().addAll((Collection) newValue); + return; + case OrmPackage.ENTITY_MAPPINGS_INTERNAL__NAMED_QUERIES : + getNamedQueries().clear(); + getNamedQueries().addAll((Collection) newValue); + return; + case OrmPackage.ENTITY_MAPPINGS_INTERNAL__NAMED_NATIVE_QUERIES : + getNamedNativeQueries().clear(); + getNamedNativeQueries().addAll((Collection) newValue); + return; + } + super.eSet(featureID, newValue); + } + + /** + * + * + * @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); + } + + /** + * + * + * @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); + } + + /** + * + * + * @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); + } + + /** + * + * + * @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); + } + + /** + * + * + * @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 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 buildMappingComparator() { + return new Comparator() { + 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 + extends EObjectContainmentEList + { + 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; + +/** + * + * A representation of the model object 'IXml Column Mapping'. + * + * + *

+ * The following features are supported: + *

    + *
  • {@link org.eclipse.jpt.core.internal.content.orm.IXmlColumnMapping#getColumnForXml Column For Xml}
  • + *
+ *

+ * + * @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 'Column For Xml' reference. + * + *

+ * If the meaning of the 'Column For Xml' reference isn't clear, + * there really should be more of a description here... + *

+ * + * @return the value of the 'Column For Xml' 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 Column For Xml}' reference. + * + * + * @param value the new value of the 'Column For Xml' reference. + * @see #getColumnForXml() + * @generated + */ + void setColumnForXml(XmlColumn value); + + /** + * + * + * @model + * @generated + */ + void makeColumnForXmlNonNull(); + + /** + * + * + * @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; + +/** + * + * An implementation of the model Factory. + * + * @see org.eclipse.jpt.core.internal.content.orm.OrmPackage + * @generated + */ +public class OrmFactory extends EFactoryImpl +{ + /** + * The singleton instance of the factory. + * + * + * @generated + */ + public static final OrmFactory eINSTANCE = init(); + + /** + * Creates the default factory implementation. + * + * + * @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. + * + * + * @generated + */ + public OrmFactory() { + super(); + } + + /** + * + * + * @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"); + } + } + + /** + * + * + * @generated + */ + public XmlRootContentNode createXmlRootContentNode() { + XmlRootContentNode xmlRootContentNode = new XmlRootContentNode(); + return xmlRootContentNode; + } + + /** + * + * + * @generated + */ + public EntityMappingsInternal createEntityMappingsInternal() { + EntityMappingsInternal entityMappingsInternal = new EntityMappingsInternal(); + return entityMappingsInternal; + } + + /** + * + * + * @generated + */ + public XmlPersistentType createXmlPersistentType() { + XmlPersistentType xmlPersistentType = new XmlPersistentType(); + return xmlPersistentType; + } + + public XmlPersistentType createXmlPersistentType(String mappingKey) { + XmlPersistentType xmlPersistentType = new XmlPersistentType(mappingKey); + return xmlPersistentType; + } + + /** + * + * + * @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; + } + + /** + * + * + * @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; + } + + /** + * + * + * @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; + } + + /** + * + * + * @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; + } + + /** + * + * + * @generated + */ + public XmlPersistentAttribute createXmlPersistentAttribute() { + XmlPersistentAttribute xmlPersistentAttribute = new XmlPersistentAttribute(); + return xmlPersistentAttribute; + } + + public XmlPersistentAttribute createXmlPersistentAttribute(String mappingKey) { + XmlPersistentAttribute xmlPersistentAttribute = new XmlPersistentAttribute(mappingKey); + return xmlPersistentAttribute; + } + + /** + * + * + * @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; + } + + /** + * + * + * @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; + } + + /** + * + * + * @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; + } + + /** + * + * + * @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; + } + + /** + * + * + * @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; + } + + /** + * + * + * @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; + } + + /** + * + * + * @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; + } + + /** + * + * + * @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; + } + + /** + * + * + * @generated + */ + public PersistenceUnitMetadataInternal createPersistenceUnitMetadataInternal() { + PersistenceUnitMetadataInternal persistenceUnitMetadataInternal = new PersistenceUnitMetadataInternal(); + return persistenceUnitMetadataInternal; + } + + /** + * + * + * @generated + */ + public PersistenceUnitDefaultsInternal createPersistenceUnitDefaultsInternal() { + PersistenceUnitDefaultsInternal persistenceUnitDefaultsInternal = new PersistenceUnitDefaultsInternal(); + return persistenceUnitDefaultsInternal; + } + + /** + * + * + * @generated + */ + public XmlTable createXmlTable() { + XmlTable xmlTable = new XmlTable(); + return xmlTable; + } + + public XmlTable createXmlTable(ITable.Owner owner) { + return new XmlTable(owner); + } + + /** + * + * + * @generated + */ + public XmlColumn createXmlColumn() { + XmlColumn xmlColumn = new XmlColumn(); + return xmlColumn; + } + + public XmlColumn createXmlColumn(IColumn.Owner owner) { + return new XmlColumn(owner); + } + + /** + * + * + * @generated NOT + */ + public XmlJoinColumn createXmlJoinColumn() { + throw new UnsupportedOperationException("Use createXmlJoinColumn(IColumn.Owner) instead"); + } + + public XmlJoinColumn createXmlJoinColumn(IJoinColumn.Owner owner) { + return new XmlJoinColumn(owner); + } + + /** + * + * + * @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; + } + + /** + * + * + * @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; + } + + /** + * + * + * @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; + } + + /** + * + * + * @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"); + } + + /** + * + * + * @generated + */ + public XmlGeneratedValue createXmlGeneratedValue() { + XmlGeneratedValue xmlGeneratedValue = new XmlGeneratedValue(); + return xmlGeneratedValue; + } + + /** + * + * + * @generated + */ + public XmlSequenceGenerator createXmlSequenceGenerator() { + XmlSequenceGenerator xmlSequenceGenerator = new XmlSequenceGenerator(); + return xmlSequenceGenerator; + } + + /** + * + * + * @generated + */ + public XmlTableGenerator createXmlTableGenerator() { + XmlTableGenerator xmlTableGenerator = new XmlTableGenerator(); + return xmlTableGenerator; + } + + /** + * + * + * @generated + */ + public XmlOrderBy createXmlOrderBy() { + XmlOrderBy xmlOrderBy = new XmlOrderBy(); + return xmlOrderBy; + } + + /** + * + * + * @generated + */ + public XmlNamedQuery createXmlNamedQuery() { + XmlNamedQuery xmlNamedQuery = new XmlNamedQuery(); + return xmlNamedQuery; + } + + /** + * + * + * @generated + */ + public XmlNamedNativeQuery createXmlNamedNativeQuery() { + XmlNamedNativeQuery xmlNamedNativeQuery = new XmlNamedNativeQuery(); + return xmlNamedNativeQuery; + } + + /** + * + * + * @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; + } + + /** + * + * + * @generated + */ + public OrmPackage getOrmPackage() { + return (OrmPackage) getEPackage(); + } + + /** + * + * + * @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; + +/** + * + * An implementation of the model Package. + * + * @see org.eclipse.jpt.core.internal.content.orm.OrmFactory + * @model kind="package" + * @generated + */ +public class OrmPackage extends EPackageImpl +{ + /** + * The package name. + * + * + * @generated + */ + public static final String eNAME = "orm"; + + /** + * The package namespace URI. + * + * + * @generated + */ + public static final String eNS_URI = "jpt.orm.xmi"; + + /** + * The package namespace name. + * + * + * @generated + */ + public static final String eNS_PREFIX = "org.eclipse.jpt.core.content.orm"; + + /** + * The singleton instance of the package. + * + * + * @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 Xml Root Content Node}' class. + * + * + * @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 'Jpa File' container reference. + * + * + * @generated + * @ordered + */ + public static final int XML_ROOT_CONTENT_NODE__JPA_FILE = JpaCorePackage.XML_EOBJECT_FEATURE_COUNT + 0; + + /** + * The feature id for the 'Entity Mappings' reference. + * + * + * @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 'Xml Root Content Node' class. + * + * + * @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 Entity Mappings Internal}' class. + * + * + * @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 'Persistence Unit Metadata For Xml' reference. + * + * + * @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 'Package For Xml' attribute. + * + * + * @generated + * @ordered + */ + public static final int ENTITY_MAPPINGS_INTERNAL__PACKAGE_FOR_XML = JpaCorePackage.XML_EOBJECT_FEATURE_COUNT + 1; + + /** + * The feature id for the 'Persistence Unit Metadata' reference. + * + * + * @generated + * @ordered + */ + public static final int ENTITY_MAPPINGS_INTERNAL__PERSISTENCE_UNIT_METADATA = JpaCorePackage.XML_EOBJECT_FEATURE_COUNT + 2; + + /** + * The feature id for the 'Package' attribute. + * + * + * @generated + * @ordered + */ + public static final int ENTITY_MAPPINGS_INTERNAL__PACKAGE = JpaCorePackage.XML_EOBJECT_FEATURE_COUNT + 3; + + /** + * The feature id for the 'Root' reference. + * + * + * @generated + * @ordered + */ + public static final int ENTITY_MAPPINGS_INTERNAL__ROOT = JpaCorePackage.XML_EOBJECT_FEATURE_COUNT + 4; + + /** + * The feature id for the 'Version' attribute. + * + * + * @generated + * @ordered + */ + public static final int ENTITY_MAPPINGS_INTERNAL__VERSION = JpaCorePackage.XML_EOBJECT_FEATURE_COUNT + 5; + + /** + * The feature id for the 'Description' attribute. + * + * + * @generated + * @ordered + */ + public static final int ENTITY_MAPPINGS_INTERNAL__DESCRIPTION = JpaCorePackage.XML_EOBJECT_FEATURE_COUNT + 6; + + /** + * The feature id for the 'Persistence Unit Metadata Internal' containment reference. + * + * + * @generated + * @ordered + */ + public static final int ENTITY_MAPPINGS_INTERNAL__PERSISTENCE_UNIT_METADATA_INTERNAL = JpaCorePackage.XML_EOBJECT_FEATURE_COUNT + 7; + + /** + * The feature id for the 'Package Internal' attribute. + * + * + * @generated + * @ordered + */ + public static final int ENTITY_MAPPINGS_INTERNAL__PACKAGE_INTERNAL = JpaCorePackage.XML_EOBJECT_FEATURE_COUNT + 8; + + /** + * The feature id for the 'Default Schema' attribute. + * + * + * @generated + * @ordered + */ + public static final int ENTITY_MAPPINGS_INTERNAL__DEFAULT_SCHEMA = JpaCorePackage.XML_EOBJECT_FEATURE_COUNT + 9; + + /** + * The feature id for the 'Specified Schema' attribute. + * + * + * @generated + * @ordered + */ + public static final int ENTITY_MAPPINGS_INTERNAL__SPECIFIED_SCHEMA = JpaCorePackage.XML_EOBJECT_FEATURE_COUNT + 10; + + /** + * The feature id for the 'Schema' attribute. + * + * + * @generated + * @ordered + */ + public static final int ENTITY_MAPPINGS_INTERNAL__SCHEMA = JpaCorePackage.XML_EOBJECT_FEATURE_COUNT + 11; + + /** + * The feature id for the 'Default Catalog' attribute. + * + * + * @generated + * @ordered + */ + public static final int ENTITY_MAPPINGS_INTERNAL__DEFAULT_CATALOG = JpaCorePackage.XML_EOBJECT_FEATURE_COUNT + 12; + + /** + * The feature id for the 'Specified Catalog' attribute. + * + * + * @generated + * @ordered + */ + public static final int ENTITY_MAPPINGS_INTERNAL__SPECIFIED_CATALOG = JpaCorePackage.XML_EOBJECT_FEATURE_COUNT + 13; + + /** + * The feature id for the 'Catalog' attribute. + * + * + * @generated + * @ordered + */ + public static final int ENTITY_MAPPINGS_INTERNAL__CATALOG = JpaCorePackage.XML_EOBJECT_FEATURE_COUNT + 14; + + /** + * The feature id for the 'Default Access' attribute. + * + * + * @generated + * @ordered + */ + public static final int ENTITY_MAPPINGS_INTERNAL__DEFAULT_ACCESS = JpaCorePackage.XML_EOBJECT_FEATURE_COUNT + 15; + + /** + * The feature id for the 'Specified Access' attribute. + * + * + * @generated + * @ordered + */ + public static final int ENTITY_MAPPINGS_INTERNAL__SPECIFIED_ACCESS = JpaCorePackage.XML_EOBJECT_FEATURE_COUNT + 16; + + /** + * The feature id for the 'Access' attribute. + * + * + * @generated + * @ordered + */ + public static final int ENTITY_MAPPINGS_INTERNAL__ACCESS = JpaCorePackage.XML_EOBJECT_FEATURE_COUNT + 17; + + /** + * The feature id for the 'Type Mappings' containment reference list. + * + * + * @generated + * @ordered + */ + public static final int ENTITY_MAPPINGS_INTERNAL__TYPE_MAPPINGS = JpaCorePackage.XML_EOBJECT_FEATURE_COUNT + 18; + + /** + * The feature id for the 'Persistent Types' reference list. + * + * + * @generated + * @ordered + */ + public static final int ENTITY_MAPPINGS_INTERNAL__PERSISTENT_TYPES = JpaCorePackage.XML_EOBJECT_FEATURE_COUNT + 19; + + /** + * The feature id for the 'Sequence Generators' containment reference list. + * + * + * @generated + * @ordered + */ + public static final int ENTITY_MAPPINGS_INTERNAL__SEQUENCE_GENERATORS = JpaCorePackage.XML_EOBJECT_FEATURE_COUNT + 20; + + /** + * The feature id for the 'Table Generators' containment reference list. + * + * + * @generated + * @ordered + */ + public static final int ENTITY_MAPPINGS_INTERNAL__TABLE_GENERATORS = JpaCorePackage.XML_EOBJECT_FEATURE_COUNT + 21; + + /** + * The feature id for the 'Named Queries' containment reference list. + * + * + * @generated + * @ordered + */ + public static final int ENTITY_MAPPINGS_INTERNAL__NAMED_QUERIES = JpaCorePackage.XML_EOBJECT_FEATURE_COUNT + 22; + + /** + * The feature id for the 'Named Native Queries' containment reference list. + * + * + * @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 'Entity Mappings Internal' class. + * + * + * @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 Entity Mappings}' class. + * + * + * @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 Entity Mappings For Xml}' class. + * + * + * @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 Xml Type Mapping}' class. + * + * + * @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 Xml Persistent Type}' class. + * + * + * @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 Xml Entity}' class. + * + * + * @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 Xml Embeddable}' class. + * + * + * @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 Xml Mapped Superclass}' class. + * + * + * @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 Xml Attribute Mapping}' class. + * + * + * @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 Xml Persistent Attribute}' class. + * + * + * @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 Xml Basic}' class. + * + * + * @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 Xml Id}' class. + * + * + * @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 Persistence Unit Metadata Internal}' class. + * + * + * @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 Persistence Unit Metadata}' class. + * + * + * @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 Persistence Unit Metadata For Xml}' class. + * + * + * @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 Persistence Unit Defaults Internal}' class. + * + * + * @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 Persistence Unit Defaults}' class. + * + * + * @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 Persistence Unit Defaults For Xml}' class. + * + * + * @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 Xml Multi Relationship Mapping}' class. + * + * + * @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 Xml One To Many}' class. + * + * + * @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 Xml Many To Many}' class. + * + * + * @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 'Persistence Unit Metadata' reference. + * + * + * @generated + * @ordered + */ + public static final int ENTITY_MAPPINGS__PERSISTENCE_UNIT_METADATA = 0; + + /** + * The feature id for the 'Package' attribute. + * + * + * @generated + * @ordered + */ + public static final int ENTITY_MAPPINGS__PACKAGE = 1; + + /** + * The number of structural features of the 'Entity Mappings' class. + * + * + * @generated + * @ordered + */ + public static final int ENTITY_MAPPINGS_FEATURE_COUNT = 2; + + /** + * The feature id for the 'Persistence Unit Metadata For Xml' reference. + * + * + * @generated + * @ordered + */ + public static final int ENTITY_MAPPINGS_FOR_XML__PERSISTENCE_UNIT_METADATA_FOR_XML = 0; + + /** + * The feature id for the 'Package For Xml' attribute. + * + * + * @generated + * @ordered + */ + public static final int ENTITY_MAPPINGS_FOR_XML__PACKAGE_FOR_XML = 1; + + /** + * The number of structural features of the 'Entity Mappings For Xml' class. + * + * + * @generated + * @ordered + */ + public static final int ENTITY_MAPPINGS_FOR_XML_FEATURE_COUNT = 2; + + /** + * The feature id for the 'Name' attribute. + * + * + * @generated + * @ordered + */ + public static final int XML_TYPE_MAPPING__NAME = JpaCorePackage.XML_EOBJECT_FEATURE_COUNT + 0; + + /** + * The feature id for the 'Table Name' attribute. + * + * + * @generated + * @ordered + */ + public static final int XML_TYPE_MAPPING__TABLE_NAME = JpaCorePackage.XML_EOBJECT_FEATURE_COUNT + 1; + + /** + * The feature id for the 'Default Access' attribute. + * + * + * @generated + * @ordered + */ + public static final int XML_TYPE_MAPPING__DEFAULT_ACCESS = JpaCorePackage.XML_EOBJECT_FEATURE_COUNT + 2; + + /** + * The feature id for the 'Specified Access' attribute. + * + * + * @generated + * @ordered + */ + public static final int XML_TYPE_MAPPING__SPECIFIED_ACCESS = JpaCorePackage.XML_EOBJECT_FEATURE_COUNT + 3; + + /** + * The feature id for the 'Access' attribute. + * + * + * @generated + * @ordered + */ + public static final int XML_TYPE_MAPPING__ACCESS = JpaCorePackage.XML_EOBJECT_FEATURE_COUNT + 4; + + /** + * The feature id for the 'Metadata Complete' attribute. + * + * + * @generated + * @ordered + */ + public static final int XML_TYPE_MAPPING__METADATA_COMPLETE = JpaCorePackage.XML_EOBJECT_FEATURE_COUNT + 5; + + /** + * The feature id for the 'Persistent Type' containment reference. + * + * + * @generated + * @ordered + */ + public static final int XML_TYPE_MAPPING__PERSISTENT_TYPE = JpaCorePackage.XML_EOBJECT_FEATURE_COUNT + 6; + + /** + * The number of structural features of the 'Xml Type Mapping' class. + * + * + * @generated + * @ordered + */ + public static final int XML_TYPE_MAPPING_FEATURE_COUNT = JpaCorePackage.XML_EOBJECT_FEATURE_COUNT + 7; + + /** + * The feature id for the 'Mapping Key' attribute. + * + * + * @generated + * @ordered + */ + public static final int XML_PERSISTENT_TYPE__MAPPING_KEY = JpaCorePackage.XML_EOBJECT_FEATURE_COUNT + 0; + + /** + * The feature id for the 'Class' attribute. + * + * + * @generated + * @ordered + */ + public static final int XML_PERSISTENT_TYPE__CLASS = JpaCorePackage.XML_EOBJECT_FEATURE_COUNT + 1; + + /** + * The feature id for the 'Attribute Mappings' containment reference list. + * + * + * @generated + * @ordered + */ + public static final int XML_PERSISTENT_TYPE__ATTRIBUTE_MAPPINGS = JpaCorePackage.XML_EOBJECT_FEATURE_COUNT + 2; + + /** + * The feature id for the 'Specified Attribute Mappings' containment reference list. + * + * + * @generated + * @ordered + */ + public static final int XML_PERSISTENT_TYPE__SPECIFIED_ATTRIBUTE_MAPPINGS = JpaCorePackage.XML_EOBJECT_FEATURE_COUNT + 3; + + /** + * The feature id for the 'Virtual Attribute Mappings' containment reference list. + * + * + * @generated + * @ordered + */ + public static final int XML_PERSISTENT_TYPE__VIRTUAL_ATTRIBUTE_MAPPINGS = JpaCorePackage.XML_EOBJECT_FEATURE_COUNT + 4; + + /** + * The feature id for the 'Persistent Attributes' reference list. + * + * + * @generated + * @ordered + */ + public static final int XML_PERSISTENT_TYPE__PERSISTENT_ATTRIBUTES = JpaCorePackage.XML_EOBJECT_FEATURE_COUNT + 5; + + /** + * The feature id for the 'Specified Persistent Attributes' reference list. + * + * + * @generated + * @ordered + */ + public static final int XML_PERSISTENT_TYPE__SPECIFIED_PERSISTENT_ATTRIBUTES = JpaCorePackage.XML_EOBJECT_FEATURE_COUNT + 6; + + /** + * The feature id for the 'Virtual Persistent Attributes' reference list. + * + * + * @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 'Xml Persistent Type' class. + * + * + * @generated + * @ordered + */ + public static final int XML_PERSISTENT_TYPE_FEATURE_COUNT = JpaCorePackage.XML_EOBJECT_FEATURE_COUNT + 8; + + /** + * The feature id for the 'Name' attribute. + * + * + * @generated + * @ordered + */ + public static final int XML_MAPPED_SUPERCLASS__NAME = XML_TYPE_MAPPING__NAME; + + /** + * The feature id for the 'Table Name' attribute. + * + * + * @generated + * @ordered + */ + public static final int XML_MAPPED_SUPERCLASS__TABLE_NAME = XML_TYPE_MAPPING__TABLE_NAME; + + /** + * The feature id for the 'Default Access' attribute. + * + * + * @generated + * @ordered + */ + public static final int XML_MAPPED_SUPERCLASS__DEFAULT_ACCESS = XML_TYPE_MAPPING__DEFAULT_ACCESS; + + /** + * The feature id for the 'Specified Access' attribute. + * + * + * @generated + * @ordered + */ + public static final int XML_MAPPED_SUPERCLASS__SPECIFIED_ACCESS = XML_TYPE_MAPPING__SPECIFIED_ACCESS; + + /** + * The feature id for the 'Access' attribute. + * + * + * @generated + * @ordered + */ + public static final int XML_MAPPED_SUPERCLASS__ACCESS = XML_TYPE_MAPPING__ACCESS; + + /** + * The feature id for the 'Metadata Complete' attribute. + * + * + * @generated + * @ordered + */ + public static final int XML_MAPPED_SUPERCLASS__METADATA_COMPLETE = XML_TYPE_MAPPING__METADATA_COMPLETE; + + /** + * The feature id for the 'Persistent Type' containment reference. + * + * + * @generated + * @ordered + */ + public static final int XML_MAPPED_SUPERCLASS__PERSISTENT_TYPE = XML_TYPE_MAPPING__PERSISTENT_TYPE; + + /** + * The number of structural features of the 'Xml Mapped Superclass' class. + * + * + * @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 Xml Entity Internal}' class. + * + * + * @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 'Name' attribute. + * + * + * @generated + * @ordered + */ + public static final int XML_ENTITY_INTERNAL__NAME = XML_TYPE_MAPPING__NAME; + + /** + * The feature id for the 'Table Name' attribute. + * + * + * @generated + * @ordered + */ + public static final int XML_ENTITY_INTERNAL__TABLE_NAME = XML_TYPE_MAPPING__TABLE_NAME; + + /** + * The feature id for the 'Default Access' attribute. + * + * + * @generated + * @ordered + */ + public static final int XML_ENTITY_INTERNAL__DEFAULT_ACCESS = XML_TYPE_MAPPING__DEFAULT_ACCESS; + + /** + * The feature id for the 'Specified Access' attribute. + * + * + * @generated + * @ordered + */ + public static final int XML_ENTITY_INTERNAL__SPECIFIED_ACCESS = XML_TYPE_MAPPING__SPECIFIED_ACCESS; + + /** + * The feature id for the 'Access' attribute. + * + * + * @generated + * @ordered + */ + public static final int XML_ENTITY_INTERNAL__ACCESS = XML_TYPE_MAPPING__ACCESS; + + /** + * The feature id for the 'Metadata Complete' attribute. + * + * + * @generated + * @ordered + */ + public static final int XML_ENTITY_INTERNAL__METADATA_COMPLETE = XML_TYPE_MAPPING__METADATA_COMPLETE; + + /** + * The feature id for the 'Persistent Type' containment reference. + * + * + * @generated + * @ordered + */ + public static final int XML_ENTITY_INTERNAL__PERSISTENT_TYPE = XML_TYPE_MAPPING__PERSISTENT_TYPE; + + /** + * The feature id for the 'Table For Xml' reference. + * + * + * @generated + * @ordered + */ + public static final int XML_ENTITY_INTERNAL__TABLE_FOR_XML = XML_TYPE_MAPPING_FEATURE_COUNT + 0; + + /** + * The feature id for the 'Discriminator Column For Xml' reference. + * + * + * @generated + * @ordered + */ + public static final int XML_ENTITY_INTERNAL__DISCRIMINATOR_COLUMN_FOR_XML = XML_TYPE_MAPPING_FEATURE_COUNT + 1; + + /** + * The feature id for the 'Specified Name' attribute. + * + * + * @generated + * @ordered + */ + public static final int XML_ENTITY_INTERNAL__SPECIFIED_NAME = XML_TYPE_MAPPING_FEATURE_COUNT + 2; + + /** + * The feature id for the 'Default Name' attribute. + * + * + * @generated + * @ordered + */ + public static final int XML_ENTITY_INTERNAL__DEFAULT_NAME = XML_TYPE_MAPPING_FEATURE_COUNT + 3; + + /** + * The feature id for the 'Table' containment reference. + * + * + * @generated + * @ordered + */ + public static final int XML_ENTITY_INTERNAL__TABLE = XML_TYPE_MAPPING_FEATURE_COUNT + 4; + + /** + * The feature id for the 'Primary Key Join Columns' containment reference list. + * + * + * @generated + * @ordered + */ + public static final int XML_ENTITY_INTERNAL__PRIMARY_KEY_JOIN_COLUMNS = XML_TYPE_MAPPING_FEATURE_COUNT + 5; + + /** + * The feature id for the 'Specified Primary Key Join Columns' containment reference list. + * + * + * @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 'Default Primary Key Join Columns' containment reference list. + * + * + * @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 'Inheritance Strategy' attribute. + * + * + * @generated + * @ordered + */ + public static final int XML_ENTITY_INTERNAL__INHERITANCE_STRATEGY = XML_TYPE_MAPPING_FEATURE_COUNT + 8; + + /** + * The feature id for the 'Default Discriminator Value' attribute. + * + * + * @generated + * @ordered + */ + public static final int XML_ENTITY_INTERNAL__DEFAULT_DISCRIMINATOR_VALUE = XML_TYPE_MAPPING_FEATURE_COUNT + 9; + + /** + * The feature id for the 'Specified Discriminator Value' attribute. + * + * + * @generated + * @ordered + */ + public static final int XML_ENTITY_INTERNAL__SPECIFIED_DISCRIMINATOR_VALUE = XML_TYPE_MAPPING_FEATURE_COUNT + 10; + + /** + * The feature id for the 'Discriminator Value' attribute. + * + * + * @generated + * @ordered + */ + public static final int XML_ENTITY_INTERNAL__DISCRIMINATOR_VALUE = XML_TYPE_MAPPING_FEATURE_COUNT + 11; + + /** + * The feature id for the 'Discriminator Column' containment reference. + * + * + * @generated + * @ordered + */ + public static final int XML_ENTITY_INTERNAL__DISCRIMINATOR_COLUMN = XML_TYPE_MAPPING_FEATURE_COUNT + 12; + + /** + * The feature id for the 'Sequence Generator' containment reference. + * + * + * @generated + * @ordered + */ + public static final int XML_ENTITY_INTERNAL__SEQUENCE_GENERATOR = XML_TYPE_MAPPING_FEATURE_COUNT + 13; + + /** + * The feature id for the 'Table Generator' containment reference. + * + * + * @generated + * @ordered + */ + public static final int XML_ENTITY_INTERNAL__TABLE_GENERATOR = XML_TYPE_MAPPING_FEATURE_COUNT + 14; + + /** + * The feature id for the 'Attribute Overrides' containment reference list. + * + * + * @generated + * @ordered + */ + public static final int XML_ENTITY_INTERNAL__ATTRIBUTE_OVERRIDES = XML_TYPE_MAPPING_FEATURE_COUNT + 15; + + /** + * The feature id for the 'Specified Attribute Overrides' containment reference list. + * + * + * @generated + * @ordered + */ + public static final int XML_ENTITY_INTERNAL__SPECIFIED_ATTRIBUTE_OVERRIDES = XML_TYPE_MAPPING_FEATURE_COUNT + 16; + + /** + * The feature id for the 'Default Attribute Overrides' containment reference list. + * + * + * @generated + * @ordered + */ + public static final int XML_ENTITY_INTERNAL__DEFAULT_ATTRIBUTE_OVERRIDES = XML_TYPE_MAPPING_FEATURE_COUNT + 17; + + /** + * The feature id for the 'Association Overrides' containment reference list. + * + * + * @generated + * @ordered + */ + public static final int XML_ENTITY_INTERNAL__ASSOCIATION_OVERRIDES = XML_TYPE_MAPPING_FEATURE_COUNT + 18; + + /** + * The feature id for the 'Specified Association Overrides' containment reference list. + * + * + * @generated + * @ordered + */ + public static final int XML_ENTITY_INTERNAL__SPECIFIED_ASSOCIATION_OVERRIDES = XML_TYPE_MAPPING_FEATURE_COUNT + 19; + + /** + * The feature id for the 'Default Association Overrides' containment reference list. + * + * + * @generated + * @ordered + */ + public static final int XML_ENTITY_INTERNAL__DEFAULT_ASSOCIATION_OVERRIDES = XML_TYPE_MAPPING_FEATURE_COUNT + 20; + + /** + * The feature id for the 'Named Queries' containment reference list. + * + * + * @generated + * @ordered + */ + public static final int XML_ENTITY_INTERNAL__NAMED_QUERIES = XML_TYPE_MAPPING_FEATURE_COUNT + 21; + + /** + * The feature id for the 'Named Native Queries' containment reference list. + * + * + * @generated + * @ordered + */ + public static final int XML_ENTITY_INTERNAL__NAMED_NATIVE_QUERIES = XML_TYPE_MAPPING_FEATURE_COUNT + 22; + + /** + * The feature id for the 'Secondary Tables' containment reference list. + * + * + * @generated + * @ordered + */ + public static final int XML_ENTITY_INTERNAL__SECONDARY_TABLES = XML_TYPE_MAPPING_FEATURE_COUNT + 23; + + /** + * The feature id for the 'Specified Secondary Tables' containment reference list. + * + * + * @generated + * @ordered + */ + public static final int XML_ENTITY_INTERNAL__SPECIFIED_SECONDARY_TABLES = XML_TYPE_MAPPING_FEATURE_COUNT + 24; + + /** + * The feature id for the 'Default Secondary Tables' containment reference list. + * + * + * @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 'Xml Entity Internal' class. + * + * + * @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 Xml Entity For Xml}' class. + * + * + * @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 'Table For Xml' reference. + * + * + * @generated + * @ordered + */ + public static final int XML_ENTITY_FOR_XML__TABLE_FOR_XML = 0; + + /** + * The feature id for the 'Discriminator Column For Xml' reference. + * + * + * @generated + * @ordered + */ + public static final int XML_ENTITY_FOR_XML__DISCRIMINATOR_COLUMN_FOR_XML = 1; + + /** + * The number of structural features of the 'Xml Entity For Xml' class. + * + * + * @generated + * @ordered + */ + public static final int XML_ENTITY_FOR_XML_FEATURE_COUNT = 2; + + /** + * The feature id for the 'Name' attribute. + * + * + * @generated + * @ordered + */ + public static final int XML_ENTITY__NAME = JpaCoreMappingsPackage.IENTITY__NAME; + + /** + * The feature id for the 'Table Name' attribute. + * + * + * @generated + * @ordered + */ + public static final int XML_ENTITY__TABLE_NAME = JpaCoreMappingsPackage.IENTITY__TABLE_NAME; + + /** + * The feature id for the 'Specified Name' attribute. + * + * + * @generated + * @ordered + */ + public static final int XML_ENTITY__SPECIFIED_NAME = JpaCoreMappingsPackage.IENTITY__SPECIFIED_NAME; + + /** + * The feature id for the 'Default Name' attribute. + * + * + * @generated + * @ordered + */ + public static final int XML_ENTITY__DEFAULT_NAME = JpaCoreMappingsPackage.IENTITY__DEFAULT_NAME; + + /** + * The feature id for the 'Table' containment reference. + * + * + * @generated + * @ordered + */ + public static final int XML_ENTITY__TABLE = JpaCoreMappingsPackage.IENTITY__TABLE; + + /** + * The feature id for the 'Primary Key Join Columns' containment reference list. + * + * + * @generated + * @ordered + */ + public static final int XML_ENTITY__PRIMARY_KEY_JOIN_COLUMNS = JpaCoreMappingsPackage.IENTITY__PRIMARY_KEY_JOIN_COLUMNS; + + /** + * The feature id for the 'Specified Primary Key Join Columns' containment reference list. + * + * + * @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 'Default Primary Key Join Columns' containment reference list. + * + * + * @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 'Inheritance Strategy' attribute. + * + * + * @generated + * @ordered + */ + public static final int XML_ENTITY__INHERITANCE_STRATEGY = JpaCoreMappingsPackage.IENTITY__INHERITANCE_STRATEGY; + + /** + * The feature id for the 'Default Discriminator Value' attribute. + * + * + * @generated + * @ordered + */ + public static final int XML_ENTITY__DEFAULT_DISCRIMINATOR_VALUE = JpaCoreMappingsPackage.IENTITY__DEFAULT_DISCRIMINATOR_VALUE; + + /** + * The feature id for the 'Specified Discriminator Value' attribute. + * + * + * @generated + * @ordered + */ + public static final int XML_ENTITY__SPECIFIED_DISCRIMINATOR_VALUE = JpaCoreMappingsPackage.IENTITY__SPECIFIED_DISCRIMINATOR_VALUE; + + /** + * The feature id for the 'Discriminator Value' attribute. + * + * + * @generated + * @ordered + */ + public static final int XML_ENTITY__DISCRIMINATOR_VALUE = JpaCoreMappingsPackage.IENTITY__DISCRIMINATOR_VALUE; + + /** + * The feature id for the 'Discriminator Column' containment reference. + * + * + * @generated + * @ordered + */ + public static final int XML_ENTITY__DISCRIMINATOR_COLUMN = JpaCoreMappingsPackage.IENTITY__DISCRIMINATOR_COLUMN; + + /** + * The feature id for the 'Sequence Generator' containment reference. + * + * + * @generated + * @ordered + */ + public static final int XML_ENTITY__SEQUENCE_GENERATOR = JpaCoreMappingsPackage.IENTITY__SEQUENCE_GENERATOR; + + /** + * The feature id for the 'Table Generator' containment reference. + * + * + * @generated + * @ordered + */ + public static final int XML_ENTITY__TABLE_GENERATOR = JpaCoreMappingsPackage.IENTITY__TABLE_GENERATOR; + + /** + * The feature id for the 'Attribute Overrides' containment reference list. + * + * + * @generated + * @ordered + */ + public static final int XML_ENTITY__ATTRIBUTE_OVERRIDES = JpaCoreMappingsPackage.IENTITY__ATTRIBUTE_OVERRIDES; + + /** + * The feature id for the 'Specified Attribute Overrides' containment reference list. + * + * + * @generated + * @ordered + */ + public static final int XML_ENTITY__SPECIFIED_ATTRIBUTE_OVERRIDES = JpaCoreMappingsPackage.IENTITY__SPECIFIED_ATTRIBUTE_OVERRIDES; + + /** + * The feature id for the 'Default Attribute Overrides' containment reference list. + * + * + * @generated + * @ordered + */ + public static final int XML_ENTITY__DEFAULT_ATTRIBUTE_OVERRIDES = JpaCoreMappingsPackage.IENTITY__DEFAULT_ATTRIBUTE_OVERRIDES; + + /** + * The feature id for the 'Association Overrides' containment reference list. + * + * + * @generated + * @ordered + */ + public static final int XML_ENTITY__ASSOCIATION_OVERRIDES = JpaCoreMappingsPackage.IENTITY__ASSOCIATION_OVERRIDES; + + /** + * The feature id for the 'Specified Association Overrides' containment reference list. + * + * + * @generated + * @ordered + */ + public static final int XML_ENTITY__SPECIFIED_ASSOCIATION_OVERRIDES = JpaCoreMappingsPackage.IENTITY__SPECIFIED_ASSOCIATION_OVERRIDES; + + /** + * The feature id for the 'Default Association Overrides' containment reference list. + * + * + * @generated + * @ordered + */ + public static final int XML_ENTITY__DEFAULT_ASSOCIATION_OVERRIDES = JpaCoreMappingsPackage.IENTITY__DEFAULT_ASSOCIATION_OVERRIDES; + + /** + * The feature id for the 'Named Queries' containment reference list. + * + * + * @generated + * @ordered + */ + public static final int XML_ENTITY__NAMED_QUERIES = JpaCoreMappingsPackage.IENTITY__NAMED_QUERIES; + + /** + * The feature id for the 'Named Native Queries' containment reference list. + * + * + * @generated + * @ordered + */ + public static final int XML_ENTITY__NAMED_NATIVE_QUERIES = JpaCoreMappingsPackage.IENTITY__NAMED_NATIVE_QUERIES; + + /** + * The feature id for the 'Secondary Tables' containment reference list. + * + * + * @generated + * @ordered + */ + public static final int XML_ENTITY__SECONDARY_TABLES = JpaCoreMappingsPackage.IENTITY_FEATURE_COUNT + 0; + + /** + * The feature id for the 'Specified Secondary Tables' containment reference list. + * + * + * @generated + * @ordered + */ + public static final int XML_ENTITY__SPECIFIED_SECONDARY_TABLES = JpaCoreMappingsPackage.IENTITY_FEATURE_COUNT + 1; + + /** + * The feature id for the 'Default Secondary Tables' containment reference list. + * + * + * @generated + * @ordered + */ + public static final int XML_ENTITY__DEFAULT_SECONDARY_TABLES = JpaCoreMappingsPackage.IENTITY_FEATURE_COUNT + 2; + + /** + * The number of structural features of the 'Xml Entity' class. + * + * + * @generated + * @ordered + */ + public static final int XML_ENTITY_FEATURE_COUNT = JpaCoreMappingsPackage.IENTITY_FEATURE_COUNT + 3; + + /** + * The feature id for the 'Name' attribute. + * + * + * @generated + * @ordered + */ + public static final int XML_EMBEDDABLE__NAME = XML_TYPE_MAPPING__NAME; + + /** + * The feature id for the 'Table Name' attribute. + * + * + * @generated + * @ordered + */ + public static final int XML_EMBEDDABLE__TABLE_NAME = XML_TYPE_MAPPING__TABLE_NAME; + + /** + * The feature id for the 'Default Access' attribute. + * + * + * @generated + * @ordered + */ + public static final int XML_EMBEDDABLE__DEFAULT_ACCESS = XML_TYPE_MAPPING__DEFAULT_ACCESS; + + /** + * The feature id for the 'Specified Access' attribute. + * + * + * @generated + * @ordered + */ + public static final int XML_EMBEDDABLE__SPECIFIED_ACCESS = XML_TYPE_MAPPING__SPECIFIED_ACCESS; + + /** + * The feature id for the 'Access' attribute. + * + * + * @generated + * @ordered + */ + public static final int XML_EMBEDDABLE__ACCESS = XML_TYPE_MAPPING__ACCESS; + + /** + * The feature id for the 'Metadata Complete' attribute. + * + * + * @generated + * @ordered + */ + public static final int XML_EMBEDDABLE__METADATA_COMPLETE = XML_TYPE_MAPPING__METADATA_COMPLETE; + + /** + * The feature id for the 'Persistent Type' containment reference. + * + * + * @generated + * @ordered + */ + public static final int XML_EMBEDDABLE__PERSISTENT_TYPE = XML_TYPE_MAPPING__PERSISTENT_TYPE; + + /** + * The number of structural features of the 'Xml Embeddable' class. + * + * + * @generated + * @ordered + */ + public static final int XML_EMBEDDABLE_FEATURE_COUNT = XML_TYPE_MAPPING_FEATURE_COUNT + 0; + + /** + * The feature id for the 'Persistent Attribute' containment reference. + * + * + * @generated + * @ordered + */ + public static final int XML_ATTRIBUTE_MAPPING__PERSISTENT_ATTRIBUTE = JpaCorePackage.XML_EOBJECT_FEATURE_COUNT + 0; + + /** + * The number of structural features of the 'Xml Attribute Mapping' class. + * + * + * @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 Xml Null Attribute Mapping}' class. + * + * + * @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 'Persistent Attribute' containment reference. + * + * + * @generated + * @ordered + */ + public static final int XML_NULL_ATTRIBUTE_MAPPING__PERSISTENT_ATTRIBUTE = XML_ATTRIBUTE_MAPPING__PERSISTENT_ATTRIBUTE; + + /** + * The number of structural features of the 'Xml Null Attribute Mapping' class. + * + * + * @generated + * @ordered + */ + public static final int XML_NULL_ATTRIBUTE_MAPPING_FEATURE_COUNT = XML_ATTRIBUTE_MAPPING_FEATURE_COUNT + 0; + + /** + * The feature id for the 'Persistent Attribute' containment reference. + * + * + * @generated + * @ordered + */ + public static final int XML_BASIC__PERSISTENT_ATTRIBUTE = XML_ATTRIBUTE_MAPPING__PERSISTENT_ATTRIBUTE; + + /** + * The feature id for the 'Fetch' attribute. + * + * + * @generated + * @ordered + */ + public static final int XML_BASIC__FETCH = XML_ATTRIBUTE_MAPPING_FEATURE_COUNT + 0; + + /** + * The feature id for the 'Optional' attribute. + * + * + * @generated + * @ordered + */ + public static final int XML_BASIC__OPTIONAL = XML_ATTRIBUTE_MAPPING_FEATURE_COUNT + 1; + + /** + * The feature id for the 'Column' containment reference. + * + * + * @generated + * @ordered + */ + public static final int XML_BASIC__COLUMN = XML_ATTRIBUTE_MAPPING_FEATURE_COUNT + 2; + + /** + * The feature id for the 'Lob' attribute. + * + * + * @generated + * @ordered + */ + public static final int XML_BASIC__LOB = XML_ATTRIBUTE_MAPPING_FEATURE_COUNT + 3; + + /** + * The feature id for the 'Temporal' attribute. + * + * + * @generated + * @ordered + */ + public static final int XML_BASIC__TEMPORAL = XML_ATTRIBUTE_MAPPING_FEATURE_COUNT + 4; + + /** + * The feature id for the 'Enumerated' attribute. + * + * + * @generated + * @ordered + */ + public static final int XML_BASIC__ENUMERATED = XML_ATTRIBUTE_MAPPING_FEATURE_COUNT + 5; + + /** + * The feature id for the 'Column For Xml' reference. + * + * + * @generated + * @ordered + */ + public static final int XML_BASIC__COLUMN_FOR_XML = XML_ATTRIBUTE_MAPPING_FEATURE_COUNT + 6; + + /** + * The number of structural features of the 'Xml Basic' class. + * + * + * @generated + * @ordered + */ + public static final int XML_BASIC_FEATURE_COUNT = XML_ATTRIBUTE_MAPPING_FEATURE_COUNT + 7; + + /** + * The feature id for the 'Persistent Attribute' containment reference. + * + * + * @generated + * @ordered + */ + public static final int XML_ID__PERSISTENT_ATTRIBUTE = XML_ATTRIBUTE_MAPPING__PERSISTENT_ATTRIBUTE; + + /** + * The feature id for the 'Column' containment reference. + * + * + * @generated + * @ordered + */ + public static final int XML_ID__COLUMN = XML_ATTRIBUTE_MAPPING_FEATURE_COUNT + 0; + + /** + * The feature id for the 'Generated Value' containment reference. + * + * + * @generated + * @ordered + */ + public static final int XML_ID__GENERATED_VALUE = XML_ATTRIBUTE_MAPPING_FEATURE_COUNT + 1; + + /** + * The feature id for the 'Temporal' attribute. + * + * + * @generated + * @ordered + */ + public static final int XML_ID__TEMPORAL = XML_ATTRIBUTE_MAPPING_FEATURE_COUNT + 2; + + /** + * The feature id for the 'Table Generator' containment reference. + * + * + * @generated + * @ordered + */ + public static final int XML_ID__TABLE_GENERATOR = XML_ATTRIBUTE_MAPPING_FEATURE_COUNT + 3; + + /** + * The feature id for the 'Sequence Generator' containment reference. + * + * + * @generated + * @ordered + */ + public static final int XML_ID__SEQUENCE_GENERATOR = XML_ATTRIBUTE_MAPPING_FEATURE_COUNT + 4; + + /** + * The feature id for the 'Column For Xml' reference. + * + * + * @generated + * @ordered + */ + public static final int XML_ID__COLUMN_FOR_XML = XML_ATTRIBUTE_MAPPING_FEATURE_COUNT + 5; + + /** + * The number of structural features of the 'Xml Id' class. + * + * + * @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 Xml Transient}' class. + * + * + * @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 'Persistent Attribute' containment reference. + * + * + * @generated + * @ordered + */ + public static final int XML_TRANSIENT__PERSISTENT_ATTRIBUTE = XML_ATTRIBUTE_MAPPING__PERSISTENT_ATTRIBUTE; + + /** + * The number of structural features of the 'Xml Transient' class. + * + * + * @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 Xml Embedded}' class. + * + * + * @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 'Persistent Attribute' containment reference. + * + * + * @generated + * @ordered + */ + public static final int XML_EMBEDDED__PERSISTENT_ATTRIBUTE = XML_ATTRIBUTE_MAPPING__PERSISTENT_ATTRIBUTE; + + /** + * The feature id for the 'Attribute Overrides' containment reference list. + * + * + * @generated + * @ordered + */ + public static final int XML_EMBEDDED__ATTRIBUTE_OVERRIDES = XML_ATTRIBUTE_MAPPING_FEATURE_COUNT + 0; + + /** + * The feature id for the 'Specified Attribute Overrides' containment reference list. + * + * + * @generated + * @ordered + */ + public static final int XML_EMBEDDED__SPECIFIED_ATTRIBUTE_OVERRIDES = XML_ATTRIBUTE_MAPPING_FEATURE_COUNT + 1; + + /** + * The feature id for the 'Default Attribute Overrides' containment reference list. + * + * + * @generated + * @ordered + */ + public static final int XML_EMBEDDED__DEFAULT_ATTRIBUTE_OVERRIDES = XML_ATTRIBUTE_MAPPING_FEATURE_COUNT + 2; + + /** + * The number of structural features of the 'Xml Embedded' class. + * + * + * @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 Xml Embedded Id}' class. + * + * + * @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 'Persistent Attribute' containment reference. + * + * + * @generated + * @ordered + */ + public static final int XML_EMBEDDED_ID__PERSISTENT_ATTRIBUTE = XML_ATTRIBUTE_MAPPING__PERSISTENT_ATTRIBUTE; + + /** + * The number of structural features of the 'Xml Embedded Id' class. + * + * + * @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 Xml Version}' class. + * + * + * @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 'Persistent Attribute' containment reference. + * + * + * @generated + * @ordered + */ + public static final int XML_VERSION__PERSISTENT_ATTRIBUTE = XML_ATTRIBUTE_MAPPING__PERSISTENT_ATTRIBUTE; + + /** + * The feature id for the 'Column' containment reference. + * + * + * @generated + * @ordered + */ + public static final int XML_VERSION__COLUMN = XML_ATTRIBUTE_MAPPING_FEATURE_COUNT + 0; + + /** + * The feature id for the 'Temporal' attribute. + * + * + * @generated + * @ordered + */ + public static final int XML_VERSION__TEMPORAL = XML_ATTRIBUTE_MAPPING_FEATURE_COUNT + 1; + + /** + * The feature id for the 'Column For Xml' reference. + * + * + * @generated + * @ordered + */ + public static final int XML_VERSION__COLUMN_FOR_XML = XML_ATTRIBUTE_MAPPING_FEATURE_COUNT + 2; + + /** + * The number of structural features of the 'Xml Version' class. + * + * + * @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 Xml Relationship Mapping}' class. + * + * + * @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 'Persistent Attribute' containment reference. + * + * + * @generated + * @ordered + */ + public static final int XML_RELATIONSHIP_MAPPING__PERSISTENT_ATTRIBUTE = XML_ATTRIBUTE_MAPPING__PERSISTENT_ATTRIBUTE; + + /** + * The feature id for the 'Target Entity' attribute. + * + * + * @generated + * @ordered + */ + public static final int XML_RELATIONSHIP_MAPPING__TARGET_ENTITY = XML_ATTRIBUTE_MAPPING_FEATURE_COUNT + 0; + + /** + * The feature id for the 'Specified Target Entity' attribute. + * + * + * @generated + * @ordered + */ + public static final int XML_RELATIONSHIP_MAPPING__SPECIFIED_TARGET_ENTITY = XML_ATTRIBUTE_MAPPING_FEATURE_COUNT + 1; + + /** + * The feature id for the 'Default Target Entity' attribute. + * + * + * @generated + * @ordered + */ + public static final int XML_RELATIONSHIP_MAPPING__DEFAULT_TARGET_ENTITY = XML_ATTRIBUTE_MAPPING_FEATURE_COUNT + 2; + + /** + * The feature id for the 'Resolved Target Entity' reference. + * + * + * @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 'Xml Relationship Mapping' class. + * + * + * @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 Xml Multi Relationship Mapping Internal}' class. + * + * + * @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 'Persistent Attribute' containment reference. + * + * + * @generated + * @ordered + */ + public static final int XML_MULTI_RELATIONSHIP_MAPPING_INTERNAL__PERSISTENT_ATTRIBUTE = XML_RELATIONSHIP_MAPPING__PERSISTENT_ATTRIBUTE; + + /** + * The feature id for the 'Target Entity' attribute. + * + * + * @generated + * @ordered + */ + public static final int XML_MULTI_RELATIONSHIP_MAPPING_INTERNAL__TARGET_ENTITY = XML_RELATIONSHIP_MAPPING__TARGET_ENTITY; + + /** + * The feature id for the 'Specified Target Entity' attribute. + * + * + * @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 'Default Target Entity' attribute. + * + * + * @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 'Resolved Target Entity' reference. + * + * + * @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 'Mapped By' attribute. + * + * + * @generated + * @ordered + */ + public static final int XML_MULTI_RELATIONSHIP_MAPPING_INTERNAL__MAPPED_BY = XML_RELATIONSHIP_MAPPING_FEATURE_COUNT + 0; + + /** + * The feature id for the 'Fetch' attribute. + * + * + * @generated + * @ordered + */ + public static final int XML_MULTI_RELATIONSHIP_MAPPING_INTERNAL__FETCH = XML_RELATIONSHIP_MAPPING_FEATURE_COUNT + 1; + + /** + * The feature id for the 'Join Table' containment reference. + * + * + * @generated + * @ordered + */ + public static final int XML_MULTI_RELATIONSHIP_MAPPING_INTERNAL__JOIN_TABLE = XML_RELATIONSHIP_MAPPING_FEATURE_COUNT + 2; + + /** + * The feature id for the 'Order By' containment reference. + * + * + * @generated + * @ordered + */ + public static final int XML_MULTI_RELATIONSHIP_MAPPING_INTERNAL__ORDER_BY = XML_RELATIONSHIP_MAPPING_FEATURE_COUNT + 3; + + /** + * The feature id for the 'Join Table For Xml' reference. + * + * + * @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 'Order By For Xml' reference. + * + * + * @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 'Xml Multi Relationship Mapping Internal' class. + * + * + * @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 Xml Multi Relationship Mapping For Xml}' class. + * + * + * @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 'Join Table For Xml' reference. + * + * + * @generated + * @ordered + */ + public static final int XML_MULTI_RELATIONSHIP_MAPPING_FOR_XML__JOIN_TABLE_FOR_XML = 0; + + /** + * The feature id for the 'Order By For Xml' reference. + * + * + * @generated + * @ordered + */ + public static final int XML_MULTI_RELATIONSHIP_MAPPING_FOR_XML__ORDER_BY_FOR_XML = 1; + + /** + * The number of structural features of the 'Xml Multi Relationship Mapping For Xml' class. + * + * + * @generated + * @ordered + */ + public static final int XML_MULTI_RELATIONSHIP_MAPPING_FOR_XML_FEATURE_COUNT = 2; + + /** + * The feature id for the 'Target Entity' attribute. + * + * + * @generated + * @ordered + */ + public static final int XML_MULTI_RELATIONSHIP_MAPPING__TARGET_ENTITY = JpaCoreMappingsPackage.IMULTI_RELATIONSHIP_MAPPING__TARGET_ENTITY; + + /** + * The feature id for the 'Specified Target Entity' attribute. + * + * + * @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 'Default Target Entity' attribute. + * + * + * @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 'Resolved Target Entity' reference. + * + * + * @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 'Mapped By' attribute. + * + * + * @generated + * @ordered + */ + public static final int XML_MULTI_RELATIONSHIP_MAPPING__MAPPED_BY = JpaCoreMappingsPackage.IMULTI_RELATIONSHIP_MAPPING__MAPPED_BY; + + /** + * The feature id for the 'Fetch' attribute. + * + * + * @generated + * @ordered + */ + public static final int XML_MULTI_RELATIONSHIP_MAPPING__FETCH = JpaCoreMappingsPackage.IMULTI_RELATIONSHIP_MAPPING__FETCH; + + /** + * The feature id for the 'Join Table' containment reference. + * + * + * @generated + * @ordered + */ + public static final int XML_MULTI_RELATIONSHIP_MAPPING__JOIN_TABLE = JpaCoreMappingsPackage.IMULTI_RELATIONSHIP_MAPPING__JOIN_TABLE; + + /** + * The feature id for the 'Order By' containment reference. + * + * + * @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 'Xml Multi Relationship Mapping' class. + * + * + * @generated + * @ordered + */ + public static final int XML_MULTI_RELATIONSHIP_MAPPING_FEATURE_COUNT = JpaCoreMappingsPackage.IMULTI_RELATIONSHIP_MAPPING_FEATURE_COUNT + 0; + + /** + * The feature id for the 'Persistent Attribute' containment reference. + * + * + * @generated + * @ordered + */ + public static final int XML_ONE_TO_MANY__PERSISTENT_ATTRIBUTE = XML_MULTI_RELATIONSHIP_MAPPING_INTERNAL__PERSISTENT_ATTRIBUTE; + + /** + * The feature id for the 'Target Entity' attribute. + * + * + * @generated + * @ordered + */ + public static final int XML_ONE_TO_MANY__TARGET_ENTITY = XML_MULTI_RELATIONSHIP_MAPPING_INTERNAL__TARGET_ENTITY; + + /** + * The feature id for the 'Specified Target Entity' attribute. + * + * + * @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 'Default Target Entity' attribute. + * + * + * @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 'Resolved Target Entity' reference. + * + * + * @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 'Mapped By' attribute. + * + * + * @generated + * @ordered + */ + public static final int XML_ONE_TO_MANY__MAPPED_BY = XML_MULTI_RELATIONSHIP_MAPPING_INTERNAL__MAPPED_BY; + + /** + * The feature id for the 'Fetch' attribute. + * + * + * @generated + * @ordered + */ + public static final int XML_ONE_TO_MANY__FETCH = XML_MULTI_RELATIONSHIP_MAPPING_INTERNAL__FETCH; + + /** + * The feature id for the 'Join Table' containment reference. + * + * + * @generated + * @ordered + */ + public static final int XML_ONE_TO_MANY__JOIN_TABLE = XML_MULTI_RELATIONSHIP_MAPPING_INTERNAL__JOIN_TABLE; + + /** + * The feature id for the 'Order By' containment reference. + * + * + * @generated + * @ordered + */ + public static final int XML_ONE_TO_MANY__ORDER_BY = XML_MULTI_RELATIONSHIP_MAPPING_INTERNAL__ORDER_BY; + + /** + * The feature id for the 'Join Table For Xml' reference. + * + * + * @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 'Order By For Xml' reference. + * + * + * @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 'Xml One To Many' class. + * + * + * @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 'Persistent Attribute' containment reference. + * + * + * @generated + * @ordered + */ + public static final int XML_MANY_TO_MANY__PERSISTENT_ATTRIBUTE = XML_MULTI_RELATIONSHIP_MAPPING_INTERNAL__PERSISTENT_ATTRIBUTE; + + /** + * The feature id for the 'Target Entity' attribute. + * + * + * @generated + * @ordered + */ + public static final int XML_MANY_TO_MANY__TARGET_ENTITY = XML_MULTI_RELATIONSHIP_MAPPING_INTERNAL__TARGET_ENTITY; + + /** + * The feature id for the 'Specified Target Entity' attribute. + * + * + * @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 'Default Target Entity' attribute. + * + * + * @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 'Resolved Target Entity' reference. + * + * + * @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 'Mapped By' attribute. + * + * + * @generated + * @ordered + */ + public static final int XML_MANY_TO_MANY__MAPPED_BY = XML_MULTI_RELATIONSHIP_MAPPING_INTERNAL__MAPPED_BY; + + /** + * The feature id for the 'Fetch' attribute. + * + * + * @generated + * @ordered + */ + public static final int XML_MANY_TO_MANY__FETCH = XML_MULTI_RELATIONSHIP_MAPPING_INTERNAL__FETCH; + + /** + * The feature id for the 'Join Table' containment reference. + * + * + * @generated + * @ordered + */ + public static final int XML_MANY_TO_MANY__JOIN_TABLE = XML_MULTI_RELATIONSHIP_MAPPING_INTERNAL__JOIN_TABLE; + + /** + * The feature id for the 'Order By' containment reference. + * + * + * @generated + * @ordered + */ + public static final int XML_MANY_TO_MANY__ORDER_BY = XML_MULTI_RELATIONSHIP_MAPPING_INTERNAL__ORDER_BY; + + /** + * The feature id for the 'Join Table For Xml' reference. + * + * + * @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 'Order By For Xml' reference. + * + * + * @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 'Xml Many To Many' class. + * + * + * @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 'Mapping Key' attribute. + * + * + * @generated + * @ordered + */ + public static final int XML_PERSISTENT_ATTRIBUTE__MAPPING_KEY = JpaCorePackage.XML_EOBJECT_FEATURE_COUNT + 0; + + /** + * The feature id for the 'Name' attribute. + * + * + * @generated + * @ordered + */ + public static final int XML_PERSISTENT_ATTRIBUTE__NAME = JpaCorePackage.XML_EOBJECT_FEATURE_COUNT + 1; + + /** + * The number of structural features of the 'Xml Persistent Attribute' class. + * + * + * @generated + * @ordered + */ + public static final int XML_PERSISTENT_ATTRIBUTE_FEATURE_COUNT = JpaCorePackage.XML_EOBJECT_FEATURE_COUNT + 2; + + /** + * The feature id for the 'Xml Mapping Metadata Complete For Xml' attribute. + * + * + * @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 'Persistence Unit Defaults For Xml' reference. + * + * + * @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 'Xml Mapping Metadata Complete' attribute. + * + * + * @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 'Persistence Unit Defaults' reference. + * + * + * @generated + * @ordered + */ + public static final int PERSISTENCE_UNIT_METADATA_INTERNAL__PERSISTENCE_UNIT_DEFAULTS = JpaCorePackage.XML_EOBJECT_FEATURE_COUNT + 3; + + /** + * The feature id for the 'Xml Mapping Metadata Complete Internal' attribute. + * + * + * @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 'Persistence Unit Defaults Internal' containment reference. + * + * + * @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 'Persistence Unit Metadata Internal' class. + * + * + * @generated + * @ordered + */ + public static final int PERSISTENCE_UNIT_METADATA_INTERNAL_FEATURE_COUNT = JpaCorePackage.XML_EOBJECT_FEATURE_COUNT + 6; + + /** + * The feature id for the 'Xml Mapping Metadata Complete' attribute. + * + * + * @generated + * @ordered + */ + public static final int PERSISTENCE_UNIT_METADATA__XML_MAPPING_METADATA_COMPLETE = JpaCorePackage.IXML_EOBJECT_FEATURE_COUNT + 0; + + /** + * The feature id for the 'Persistence Unit Defaults' reference. + * + * + * @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 'Persistence Unit Metadata' class. + * + * + * @generated + * @ordered + */ + public static final int PERSISTENCE_UNIT_METADATA_FEATURE_COUNT = JpaCorePackage.IXML_EOBJECT_FEATURE_COUNT + 2; + + /** + * The feature id for the 'Xml Mapping Metadata Complete For Xml' attribute. + * + * + * @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 'Persistence Unit Defaults For Xml' reference. + * + * + * @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 'Persistence Unit Metadata For Xml' class. + * + * + * @generated + * @ordered + */ + public static final int PERSISTENCE_UNIT_METADATA_FOR_XML_FEATURE_COUNT = JpaCorePackage.IXML_EOBJECT_FEATURE_COUNT + 2; + + /** + * The feature id for the 'Schema' attribute. + * + * + * @generated + * @ordered + */ + public static final int PERSISTENCE_UNIT_DEFAULTS_INTERNAL__SCHEMA = JpaCorePackage.XML_EOBJECT_FEATURE_COUNT + 0; + + /** + * The feature id for the 'Catalog' attribute. + * + * + * @generated + * @ordered + */ + public static final int PERSISTENCE_UNIT_DEFAULTS_INTERNAL__CATALOG = JpaCorePackage.XML_EOBJECT_FEATURE_COUNT + 1; + + /** + * The feature id for the 'Access' attribute. + * + * + * @generated + * @ordered + */ + public static final int PERSISTENCE_UNIT_DEFAULTS_INTERNAL__ACCESS = JpaCorePackage.XML_EOBJECT_FEATURE_COUNT + 2; + + /** + * The feature id for the 'Cascade Persist' attribute. + * + * + * @generated + * @ordered + */ + public static final int PERSISTENCE_UNIT_DEFAULTS_INTERNAL__CASCADE_PERSIST = JpaCorePackage.XML_EOBJECT_FEATURE_COUNT + 3; + + /** + * The feature id for the 'Schema For Xml' attribute. + * + * + * @generated + * @ordered + */ + public static final int PERSISTENCE_UNIT_DEFAULTS_INTERNAL__SCHEMA_FOR_XML = JpaCorePackage.XML_EOBJECT_FEATURE_COUNT + 4; + + /** + * The feature id for the 'Catalog For Xml' attribute. + * + * + * @generated + * @ordered + */ + public static final int PERSISTENCE_UNIT_DEFAULTS_INTERNAL__CATALOG_FOR_XML = JpaCorePackage.XML_EOBJECT_FEATURE_COUNT + 5; + + /** + * The feature id for the 'Access For Xml' attribute. + * + * + * @generated + * @ordered + */ + public static final int PERSISTENCE_UNIT_DEFAULTS_INTERNAL__ACCESS_FOR_XML = JpaCorePackage.XML_EOBJECT_FEATURE_COUNT + 6; + + /** + * The feature id for the 'Cascade Persist For Xml' attribute. + * + * + * @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 'Schema Internal' attribute. + * + * + * @generated + * @ordered + */ + public static final int PERSISTENCE_UNIT_DEFAULTS_INTERNAL__SCHEMA_INTERNAL = JpaCorePackage.XML_EOBJECT_FEATURE_COUNT + 8; + + /** + * The feature id for the 'Catalog Internal' attribute. + * + * + * @generated + * @ordered + */ + public static final int PERSISTENCE_UNIT_DEFAULTS_INTERNAL__CATALOG_INTERNAL = JpaCorePackage.XML_EOBJECT_FEATURE_COUNT + 9; + + /** + * The feature id for the 'Access Internal' attribute. + * + * + * @generated + * @ordered + */ + public static final int PERSISTENCE_UNIT_DEFAULTS_INTERNAL__ACCESS_INTERNAL = JpaCorePackage.XML_EOBJECT_FEATURE_COUNT + 10; + + /** + * The feature id for the 'Cascade Persist Internal' attribute. + * + * + * @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 'Persistence Unit Defaults Internal' class. + * + * + * @generated + * @ordered + */ + public static final int PERSISTENCE_UNIT_DEFAULTS_INTERNAL_FEATURE_COUNT = JpaCorePackage.XML_EOBJECT_FEATURE_COUNT + 12; + + /** + * The feature id for the 'Schema' attribute. + * + * + * @generated + * @ordered + */ + public static final int PERSISTENCE_UNIT_DEFAULTS__SCHEMA = JpaCorePackage.IXML_EOBJECT_FEATURE_COUNT + 0; + + /** + * The feature id for the 'Catalog' attribute. + * + * + * @generated + * @ordered + */ + public static final int PERSISTENCE_UNIT_DEFAULTS__CATALOG = JpaCorePackage.IXML_EOBJECT_FEATURE_COUNT + 1; + + /** + * The feature id for the 'Access' attribute. + * + * + * @generated + * @ordered + */ + public static final int PERSISTENCE_UNIT_DEFAULTS__ACCESS = JpaCorePackage.IXML_EOBJECT_FEATURE_COUNT + 2; + + /** + * The feature id for the 'Cascade Persist' attribute. + * + * + * @generated + * @ordered + */ + public static final int PERSISTENCE_UNIT_DEFAULTS__CASCADE_PERSIST = JpaCorePackage.IXML_EOBJECT_FEATURE_COUNT + 3; + + /** + * The number of structural features of the 'Persistence Unit Defaults' class. + * + * + * @generated + * @ordered + */ + public static final int PERSISTENCE_UNIT_DEFAULTS_FEATURE_COUNT = JpaCorePackage.IXML_EOBJECT_FEATURE_COUNT + 4; + + /** + * The feature id for the 'Schema For Xml' attribute. + * + * + * @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 'Catalog For Xml' attribute. + * + * + * @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 'Access For Xml' attribute. + * + * + * @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 'Cascade Persist For Xml' attribute. + * + * + * @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 'Persistence Unit Defaults For Xml' class. + * + * + * @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 Abstract Xml Table}' class. + * + * + * @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 'Name' attribute. + * + * + * @generated + * @ordered + */ + public static final int ABSTRACT_XML_TABLE__NAME = JpaCorePackage.XML_EOBJECT_FEATURE_COUNT + 0; + + /** + * The feature id for the 'Specified Name' attribute. + * + * + * @generated + * @ordered + */ + public static final int ABSTRACT_XML_TABLE__SPECIFIED_NAME = JpaCorePackage.XML_EOBJECT_FEATURE_COUNT + 1; + + /** + * The feature id for the 'Default Name' attribute. + * + * + * @generated + * @ordered + */ + public static final int ABSTRACT_XML_TABLE__DEFAULT_NAME = JpaCorePackage.XML_EOBJECT_FEATURE_COUNT + 2; + + /** + * The feature id for the 'Catalog' attribute. + * + * + * @generated + * @ordered + */ + public static final int ABSTRACT_XML_TABLE__CATALOG = JpaCorePackage.XML_EOBJECT_FEATURE_COUNT + 3; + + /** + * The feature id for the 'Specified Catalog' attribute. + * + * + * @generated + * @ordered + */ + public static final int ABSTRACT_XML_TABLE__SPECIFIED_CATALOG = JpaCorePackage.XML_EOBJECT_FEATURE_COUNT + 4; + + /** + * The feature id for the 'Default Catalog' attribute. + * + * + * @generated + * @ordered + */ + public static final int ABSTRACT_XML_TABLE__DEFAULT_CATALOG = JpaCorePackage.XML_EOBJECT_FEATURE_COUNT + 5; + + /** + * The feature id for the 'Schema' attribute. + * + * + * @generated + * @ordered + */ + public static final int ABSTRACT_XML_TABLE__SCHEMA = JpaCorePackage.XML_EOBJECT_FEATURE_COUNT + 6; + + /** + * The feature id for the 'Specified Schema' attribute. + * + * + * @generated + * @ordered + */ + public static final int ABSTRACT_XML_TABLE__SPECIFIED_SCHEMA = JpaCorePackage.XML_EOBJECT_FEATURE_COUNT + 7; + + /** + * The feature id for the 'Default Schema' attribute. + * + * + * @generated + * @ordered + */ + public static final int ABSTRACT_XML_TABLE__DEFAULT_SCHEMA = JpaCorePackage.XML_EOBJECT_FEATURE_COUNT + 8; + + /** + * The feature id for the 'Specified Name For Xml' attribute. + * + * + * @generated + * @ordered + */ + public static final int ABSTRACT_XML_TABLE__SPECIFIED_NAME_FOR_XML = JpaCorePackage.XML_EOBJECT_FEATURE_COUNT + 9; + + /** + * The feature id for the 'Specified Catalog For Xml' attribute. + * + * + * @generated + * @ordered + */ + public static final int ABSTRACT_XML_TABLE__SPECIFIED_CATALOG_FOR_XML = JpaCorePackage.XML_EOBJECT_FEATURE_COUNT + 10; + + /** + * The feature id for the 'Specified Schema For Xml' attribute. + * + * + * @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 'Abstract Xml Table' class. + * + * + * @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 Xml Table}' class. + * + * + * @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 'Name' attribute. + * + * + * @generated + * @ordered + */ + public static final int XML_TABLE__NAME = ABSTRACT_XML_TABLE__NAME; + + /** + * The feature id for the 'Specified Name' attribute. + * + * + * @generated + * @ordered + */ + public static final int XML_TABLE__SPECIFIED_NAME = ABSTRACT_XML_TABLE__SPECIFIED_NAME; + + /** + * The feature id for the 'Default Name' attribute. + * + * + * @generated + * @ordered + */ + public static final int XML_TABLE__DEFAULT_NAME = ABSTRACT_XML_TABLE__DEFAULT_NAME; + + /** + * The feature id for the 'Catalog' attribute. + * + * + * @generated + * @ordered + */ + public static final int XML_TABLE__CATALOG = ABSTRACT_XML_TABLE__CATALOG; + + /** + * The feature id for the 'Specified Catalog' attribute. + * + * + * @generated + * @ordered + */ + public static final int XML_TABLE__SPECIFIED_CATALOG = ABSTRACT_XML_TABLE__SPECIFIED_CATALOG; + + /** + * The feature id for the 'Default Catalog' attribute. + * + * + * @generated + * @ordered + */ + public static final int XML_TABLE__DEFAULT_CATALOG = ABSTRACT_XML_TABLE__DEFAULT_CATALOG; + + /** + * The feature id for the 'Schema' attribute. + * + * + * @generated + * @ordered + */ + public static final int XML_TABLE__SCHEMA = ABSTRACT_XML_TABLE__SCHEMA; + + /** + * The feature id for the 'Specified Schema' attribute. + * + * + * @generated + * @ordered + */ + public static final int XML_TABLE__SPECIFIED_SCHEMA = ABSTRACT_XML_TABLE__SPECIFIED_SCHEMA; + + /** + * The feature id for the 'Default Schema' attribute. + * + * + * @generated + * @ordered + */ + public static final int XML_TABLE__DEFAULT_SCHEMA = ABSTRACT_XML_TABLE__DEFAULT_SCHEMA; + + /** + * The feature id for the 'Specified Name For Xml' attribute. + * + * + * @generated + * @ordered + */ + public static final int XML_TABLE__SPECIFIED_NAME_FOR_XML = ABSTRACT_XML_TABLE__SPECIFIED_NAME_FOR_XML; + + /** + * The feature id for the 'Specified Catalog For Xml' attribute. + * + * + * @generated + * @ordered + */ + public static final int XML_TABLE__SPECIFIED_CATALOG_FOR_XML = ABSTRACT_XML_TABLE__SPECIFIED_CATALOG_FOR_XML; + + /** + * The feature id for the 'Specified Schema For Xml' attribute. + * + * + * @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 'Xml Table' class. + * + * + * @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 Abstract Xml Named Column}' class. + * + * + * @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 'Name' attribute. + * + * + * @generated + * @ordered + */ + public static final int ABSTRACT_XML_NAMED_COLUMN__NAME = JpaCorePackage.XML_EOBJECT_FEATURE_COUNT + 0; + + /** + * The feature id for the 'Specified Name' attribute. + * + * + * @generated + * @ordered + */ + public static final int ABSTRACT_XML_NAMED_COLUMN__SPECIFIED_NAME = JpaCorePackage.XML_EOBJECT_FEATURE_COUNT + 1; + + /** + * The feature id for the 'Default Name' attribute. + * + * + * @generated + * @ordered + */ + public static final int ABSTRACT_XML_NAMED_COLUMN__DEFAULT_NAME = JpaCorePackage.XML_EOBJECT_FEATURE_COUNT + 2; + + /** + * The feature id for the 'Column Definition' attribute. + * + * + * @generated + * @ordered + */ + public static final int ABSTRACT_XML_NAMED_COLUMN__COLUMN_DEFINITION = JpaCorePackage.XML_EOBJECT_FEATURE_COUNT + 3; + + /** + * The feature id for the 'Specified Name For Xml' attribute. + * + * + * @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 'Column Definition For Xml' attribute. + * + * + * @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 'Abstract Xml Named Column' class. + * + * + * @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 Abstract Xml Column}' class. + * + * + * @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 'Name' attribute. + * + * + * @generated + * @ordered + */ + public static final int ABSTRACT_XML_COLUMN__NAME = ABSTRACT_XML_NAMED_COLUMN__NAME; + + /** + * The feature id for the 'Specified Name' attribute. + * + * + * @generated + * @ordered + */ + public static final int ABSTRACT_XML_COLUMN__SPECIFIED_NAME = ABSTRACT_XML_NAMED_COLUMN__SPECIFIED_NAME; + + /** + * The feature id for the 'Default Name' attribute. + * + * + * @generated + * @ordered + */ + public static final int ABSTRACT_XML_COLUMN__DEFAULT_NAME = ABSTRACT_XML_NAMED_COLUMN__DEFAULT_NAME; + + /** + * The feature id for the 'Column Definition' attribute. + * + * + * @generated + * @ordered + */ + public static final int ABSTRACT_XML_COLUMN__COLUMN_DEFINITION = ABSTRACT_XML_NAMED_COLUMN__COLUMN_DEFINITION; + + /** + * The feature id for the 'Specified Name For Xml' attribute. + * + * + * @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 'Column Definition For Xml' attribute. + * + * + * @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 'Unique' attribute. + * + * + * @generated + * @ordered + */ + public static final int ABSTRACT_XML_COLUMN__UNIQUE = ABSTRACT_XML_NAMED_COLUMN_FEATURE_COUNT + 0; + + /** + * The feature id for the 'Nullable' attribute. + * + * + * @generated + * @ordered + */ + public static final int ABSTRACT_XML_COLUMN__NULLABLE = ABSTRACT_XML_NAMED_COLUMN_FEATURE_COUNT + 1; + + /** + * The feature id for the 'Insertable' attribute. + * + * + * @generated + * @ordered + */ + public static final int ABSTRACT_XML_COLUMN__INSERTABLE = ABSTRACT_XML_NAMED_COLUMN_FEATURE_COUNT + 2; + + /** + * The feature id for the 'Updatable' attribute. + * + * + * @generated + * @ordered + */ + public static final int ABSTRACT_XML_COLUMN__UPDATABLE = ABSTRACT_XML_NAMED_COLUMN_FEATURE_COUNT + 3; + + /** + * The feature id for the 'Table' attribute. + * + * + * @generated + * @ordered + */ + public static final int ABSTRACT_XML_COLUMN__TABLE = ABSTRACT_XML_NAMED_COLUMN_FEATURE_COUNT + 4; + + /** + * The feature id for the 'Specified Table' attribute. + * + * + * @generated + * @ordered + */ + public static final int ABSTRACT_XML_COLUMN__SPECIFIED_TABLE = ABSTRACT_XML_NAMED_COLUMN_FEATURE_COUNT + 5; + + /** + * The feature id for the 'Default Table' attribute. + * + * + * @generated + * @ordered + */ + public static final int ABSTRACT_XML_COLUMN__DEFAULT_TABLE = ABSTRACT_XML_NAMED_COLUMN_FEATURE_COUNT + 6; + + /** + * The feature id for the 'Unique For Xml' attribute. + * + * + * @generated + * @ordered + */ + public static final int ABSTRACT_XML_COLUMN__UNIQUE_FOR_XML = ABSTRACT_XML_NAMED_COLUMN_FEATURE_COUNT + 7; + + /** + * The feature id for the 'Nullable For Xml' attribute. + * + * + * @generated + * @ordered + */ + public static final int ABSTRACT_XML_COLUMN__NULLABLE_FOR_XML = ABSTRACT_XML_NAMED_COLUMN_FEATURE_COUNT + 8; + + /** + * The feature id for the 'Insertable For Xml' attribute. + * + * + * @generated + * @ordered + */ + public static final int ABSTRACT_XML_COLUMN__INSERTABLE_FOR_XML = ABSTRACT_XML_NAMED_COLUMN_FEATURE_COUNT + 9; + + /** + * The feature id for the 'Updatable For Xml' attribute. + * + * + * @generated + * @ordered + */ + public static final int ABSTRACT_XML_COLUMN__UPDATABLE_FOR_XML = ABSTRACT_XML_NAMED_COLUMN_FEATURE_COUNT + 10; + + /** + * The feature id for the 'Specified Table For Xml' attribute. + * + * + * @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 'Abstract Xml Column' class. + * + * + * @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 Xml Column}' class. + * + * + * @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 'Name' attribute. + * + * + * @generated + * @ordered + */ + public static final int XML_COLUMN__NAME = ABSTRACT_XML_COLUMN__NAME; + + /** + * The feature id for the 'Specified Name' attribute. + * + * + * @generated + * @ordered + */ + public static final int XML_COLUMN__SPECIFIED_NAME = ABSTRACT_XML_COLUMN__SPECIFIED_NAME; + + /** + * The feature id for the 'Default Name' attribute. + * + * + * @generated + * @ordered + */ + public static final int XML_COLUMN__DEFAULT_NAME = ABSTRACT_XML_COLUMN__DEFAULT_NAME; + + /** + * The feature id for the 'Column Definition' attribute. + * + * + * @generated + * @ordered + */ + public static final int XML_COLUMN__COLUMN_DEFINITION = ABSTRACT_XML_COLUMN__COLUMN_DEFINITION; + + /** + * The feature id for the 'Specified Name For Xml' attribute. + * + * + * @generated + * @ordered + */ + public static final int XML_COLUMN__SPECIFIED_NAME_FOR_XML = ABSTRACT_XML_COLUMN__SPECIFIED_NAME_FOR_XML; + + /** + * The feature id for the 'Column Definition For Xml' attribute. + * + * + * @generated + * @ordered + */ + public static final int XML_COLUMN__COLUMN_DEFINITION_FOR_XML = ABSTRACT_XML_COLUMN__COLUMN_DEFINITION_FOR_XML; + + /** + * The feature id for the 'Unique' attribute. + * + * + * @generated + * @ordered + */ + public static final int XML_COLUMN__UNIQUE = ABSTRACT_XML_COLUMN__UNIQUE; + + /** + * The feature id for the 'Nullable' attribute. + * + * + * @generated + * @ordered + */ + public static final int XML_COLUMN__NULLABLE = ABSTRACT_XML_COLUMN__NULLABLE; + + /** + * The feature id for the 'Insertable' attribute. + * + * + * @generated + * @ordered + */ + public static final int XML_COLUMN__INSERTABLE = ABSTRACT_XML_COLUMN__INSERTABLE; + + /** + * The feature id for the 'Updatable' attribute. + * + * + * @generated + * @ordered + */ + public static final int XML_COLUMN__UPDATABLE = ABSTRACT_XML_COLUMN__UPDATABLE; + + /** + * The feature id for the 'Table' attribute. + * + * + * @generated + * @ordered + */ + public static final int XML_COLUMN__TABLE = ABSTRACT_XML_COLUMN__TABLE; + + /** + * The feature id for the 'Specified Table' attribute. + * + * + * @generated + * @ordered + */ + public static final int XML_COLUMN__SPECIFIED_TABLE = ABSTRACT_XML_COLUMN__SPECIFIED_TABLE; + + /** + * The feature id for the 'Default Table' attribute. + * + * + * @generated + * @ordered + */ + public static final int XML_COLUMN__DEFAULT_TABLE = ABSTRACT_XML_COLUMN__DEFAULT_TABLE; + + /** + * The feature id for the 'Unique For Xml' attribute. + * + * + * @generated + * @ordered + */ + public static final int XML_COLUMN__UNIQUE_FOR_XML = ABSTRACT_XML_COLUMN__UNIQUE_FOR_XML; + + /** + * The feature id for the 'Nullable For Xml' attribute. + * + * + * @generated + * @ordered + */ + public static final int XML_COLUMN__NULLABLE_FOR_XML = ABSTRACT_XML_COLUMN__NULLABLE_FOR_XML; + + /** + * The feature id for the 'Insertable For Xml' attribute. + * + * + * @generated + * @ordered + */ + public static final int XML_COLUMN__INSERTABLE_FOR_XML = ABSTRACT_XML_COLUMN__INSERTABLE_FOR_XML; + + /** + * The feature id for the 'Updatable For Xml' attribute. + * + * + * @generated + * @ordered + */ + public static final int XML_COLUMN__UPDATABLE_FOR_XML = ABSTRACT_XML_COLUMN__UPDATABLE_FOR_XML; + + /** + * The feature id for the 'Specified Table For Xml' attribute. + * + * + * @generated + * @ordered + */ + public static final int XML_COLUMN__SPECIFIED_TABLE_FOR_XML = ABSTRACT_XML_COLUMN__SPECIFIED_TABLE_FOR_XML; + + /** + * The feature id for the 'Length' attribute. + * + * + * @generated + * @ordered + */ + public static final int XML_COLUMN__LENGTH = ABSTRACT_XML_COLUMN_FEATURE_COUNT + 0; + + /** + * The feature id for the 'Precision' attribute. + * + * + * @generated + * @ordered + */ + public static final int XML_COLUMN__PRECISION = ABSTRACT_XML_COLUMN_FEATURE_COUNT + 1; + + /** + * The feature id for the 'Scale' attribute. + * + * + * @generated + * @ordered + */ + public static final int XML_COLUMN__SCALE = ABSTRACT_XML_COLUMN_FEATURE_COUNT + 2; + + /** + * The feature id for the 'Length For Xml' attribute. + * + * + * @generated + * @ordered + */ + public static final int XML_COLUMN__LENGTH_FOR_XML = ABSTRACT_XML_COLUMN_FEATURE_COUNT + 3; + + /** + * The feature id for the 'Precision For Xml' attribute. + * + * + * @generated + * @ordered + */ + public static final int XML_COLUMN__PRECISION_FOR_XML = ABSTRACT_XML_COLUMN_FEATURE_COUNT + 4; + + /** + * The feature id for the 'Scale For Xml' attribute. + * + * + * @generated + * @ordered + */ + public static final int XML_COLUMN__SCALE_FOR_XML = ABSTRACT_XML_COLUMN_FEATURE_COUNT + 5; + + /** + * The number of structural features of the 'Xml Column' class. + * + * + * @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 Xml Join Column}' class. + * + * + * @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 'Name' attribute. + * + * + * @generated + * @ordered + */ + public static final int XML_JOIN_COLUMN__NAME = ABSTRACT_XML_COLUMN__NAME; + + /** + * The feature id for the 'Specified Name' attribute. + * + * + * @generated + * @ordered + */ + public static final int XML_JOIN_COLUMN__SPECIFIED_NAME = ABSTRACT_XML_COLUMN__SPECIFIED_NAME; + + /** + * The feature id for the 'Default Name' attribute. + * + * + * @generated + * @ordered + */ + public static final int XML_JOIN_COLUMN__DEFAULT_NAME = ABSTRACT_XML_COLUMN__DEFAULT_NAME; + + /** + * The feature id for the 'Column Definition' attribute. + * + * + * @generated + * @ordered + */ + public static final int XML_JOIN_COLUMN__COLUMN_DEFINITION = ABSTRACT_XML_COLUMN__COLUMN_DEFINITION; + + /** + * The feature id for the 'Specified Name For Xml' attribute. + * + * + * @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 'Column Definition For Xml' attribute. + * + * + * @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 'Unique' attribute. + * + * + * @generated + * @ordered + */ + public static final int XML_JOIN_COLUMN__UNIQUE = ABSTRACT_XML_COLUMN__UNIQUE; + + /** + * The feature id for the 'Nullable' attribute. + * + * + * @generated + * @ordered + */ + public static final int XML_JOIN_COLUMN__NULLABLE = ABSTRACT_XML_COLUMN__NULLABLE; + + /** + * The feature id for the 'Insertable' attribute. + * + * + * @generated + * @ordered + */ + public static final int XML_JOIN_COLUMN__INSERTABLE = ABSTRACT_XML_COLUMN__INSERTABLE; + + /** + * The feature id for the 'Updatable' attribute. + * + * + * @generated + * @ordered + */ + public static final int XML_JOIN_COLUMN__UPDATABLE = ABSTRACT_XML_COLUMN__UPDATABLE; + + /** + * The feature id for the 'Table' attribute. + * + * + * @generated + * @ordered + */ + public static final int XML_JOIN_COLUMN__TABLE = ABSTRACT_XML_COLUMN__TABLE; + + /** + * The feature id for the 'Specified Table' attribute. + * + * + * @generated + * @ordered + */ + public static final int XML_JOIN_COLUMN__SPECIFIED_TABLE = ABSTRACT_XML_COLUMN__SPECIFIED_TABLE; + + /** + * The feature id for the 'Default Table' attribute. + * + * + * @generated + * @ordered + */ + public static final int XML_JOIN_COLUMN__DEFAULT_TABLE = ABSTRACT_XML_COLUMN__DEFAULT_TABLE; + + /** + * The feature id for the 'Unique For Xml' attribute. + * + * + * @generated + * @ordered + */ + public static final int XML_JOIN_COLUMN__UNIQUE_FOR_XML = ABSTRACT_XML_COLUMN__UNIQUE_FOR_XML; + + /** + * The feature id for the 'Nullable For Xml' attribute. + * + * + * @generated + * @ordered + */ + public static final int XML_JOIN_COLUMN__NULLABLE_FOR_XML = ABSTRACT_XML_COLUMN__NULLABLE_FOR_XML; + + /** + * The feature id for the 'Insertable For Xml' attribute. + * + * + * @generated + * @ordered + */ + public static final int XML_JOIN_COLUMN__INSERTABLE_FOR_XML = ABSTRACT_XML_COLUMN__INSERTABLE_FOR_XML; + + /** + * The feature id for the 'Updatable For Xml' attribute. + * + * + * @generated + * @ordered + */ + public static final int XML_JOIN_COLUMN__UPDATABLE_FOR_XML = ABSTRACT_XML_COLUMN__UPDATABLE_FOR_XML; + + /** + * The feature id for the 'Specified Table For Xml' attribute. + * + * + * @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 'Referenced Column Name' attribute. + * + * + * @generated + * @ordered + */ + public static final int XML_JOIN_COLUMN__REFERENCED_COLUMN_NAME = ABSTRACT_XML_COLUMN_FEATURE_COUNT + 0; + + /** + * The feature id for the 'Specified Referenced Column Name' attribute. + * + * + * @generated + * @ordered + */ + public static final int XML_JOIN_COLUMN__SPECIFIED_REFERENCED_COLUMN_NAME = ABSTRACT_XML_COLUMN_FEATURE_COUNT + 1; + + /** + * The feature id for the 'Default Referenced Column Name' attribute. + * + * + * @generated + * @ordered + */ + public static final int XML_JOIN_COLUMN__DEFAULT_REFERENCED_COLUMN_NAME = ABSTRACT_XML_COLUMN_FEATURE_COUNT + 2; + + /** + * The feature id for the 'Specified Referenced Column Name For Xml' attribute. + * + * + * @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 'Xml Join Column' class. + * + * + * @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 IXml Column Mapping}' class. + * + * + * @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 'Column For Xml' reference. + * + * + * @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 'IXml Column Mapping' class. + * + * + * @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 Xml Single Relationship Mapping}' class. + * + * + * @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 'Persistent Attribute' containment reference. + * + * + * @generated + * @ordered + */ + public static final int XML_SINGLE_RELATIONSHIP_MAPPING__PERSISTENT_ATTRIBUTE = XML_RELATIONSHIP_MAPPING__PERSISTENT_ATTRIBUTE; + + /** + * The feature id for the 'Target Entity' attribute. + * + * + * @generated + * @ordered + */ + public static final int XML_SINGLE_RELATIONSHIP_MAPPING__TARGET_ENTITY = XML_RELATIONSHIP_MAPPING__TARGET_ENTITY; + + /** + * The feature id for the 'Specified Target Entity' attribute. + * + * + * @generated + * @ordered + */ + public static final int XML_SINGLE_RELATIONSHIP_MAPPING__SPECIFIED_TARGET_ENTITY = XML_RELATIONSHIP_MAPPING__SPECIFIED_TARGET_ENTITY; + + /** + * The feature id for the 'Default Target Entity' attribute. + * + * + * @generated + * @ordered + */ + public static final int XML_SINGLE_RELATIONSHIP_MAPPING__DEFAULT_TARGET_ENTITY = XML_RELATIONSHIP_MAPPING__DEFAULT_TARGET_ENTITY; + + /** + * The feature id for the 'Resolved Target Entity' reference. + * + * + * @generated + * @ordered + */ + public static final int XML_SINGLE_RELATIONSHIP_MAPPING__RESOLVED_TARGET_ENTITY = XML_RELATIONSHIP_MAPPING__RESOLVED_TARGET_ENTITY; + + /** + * The feature id for the 'Fetch' attribute. + * + * + * @generated + * @ordered + */ + public static final int XML_SINGLE_RELATIONSHIP_MAPPING__FETCH = XML_RELATIONSHIP_MAPPING_FEATURE_COUNT + 0; + + /** + * The feature id for the 'Join Columns' containment reference list. + * + * + * @generated + * @ordered + */ + public static final int XML_SINGLE_RELATIONSHIP_MAPPING__JOIN_COLUMNS = XML_RELATIONSHIP_MAPPING_FEATURE_COUNT + 1; + + /** + * The feature id for the 'Specified Join Columns' containment reference list. + * + * + * @generated + * @ordered + */ + public static final int XML_SINGLE_RELATIONSHIP_MAPPING__SPECIFIED_JOIN_COLUMNS = XML_RELATIONSHIP_MAPPING_FEATURE_COUNT + 2; + + /** + * The feature id for the 'Default Join Columns' containment reference list. + * + * + * @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 'Xml Single Relationship Mapping' class. + * + * + * @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 Xml Many To One}' class. + * + * + * @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 'Persistent Attribute' containment reference. + * + * + * @generated + * @ordered + */ + public static final int XML_MANY_TO_ONE__PERSISTENT_ATTRIBUTE = XML_SINGLE_RELATIONSHIP_MAPPING__PERSISTENT_ATTRIBUTE; + + /** + * The feature id for the 'Target Entity' attribute. + * + * + * @generated + * @ordered + */ + public static final int XML_MANY_TO_ONE__TARGET_ENTITY = XML_SINGLE_RELATIONSHIP_MAPPING__TARGET_ENTITY; + + /** + * The feature id for the 'Specified Target Entity' attribute. + * + * + * @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 'Default Target Entity' attribute. + * + * + * @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 'Resolved Target Entity' reference. + * + * + * @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 'Fetch' attribute. + * + * + * @generated + * @ordered + */ + public static final int XML_MANY_TO_ONE__FETCH = XML_SINGLE_RELATIONSHIP_MAPPING__FETCH; + + /** + * The feature id for the 'Join Columns' containment reference list. + * + * + * @generated + * @ordered + */ + public static final int XML_MANY_TO_ONE__JOIN_COLUMNS = XML_SINGLE_RELATIONSHIP_MAPPING__JOIN_COLUMNS; + + /** + * The feature id for the 'Specified Join Columns' containment reference list. + * + * + * @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 'Default Join Columns' containment reference list. + * + * + * @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 'Xml Many To One' class. + * + * + * @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 Xml One To One}' class. + * + * + * @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 'Persistent Attribute' containment reference. + * + * + * @generated + * @ordered + */ + public static final int XML_ONE_TO_ONE__PERSISTENT_ATTRIBUTE = XML_SINGLE_RELATIONSHIP_MAPPING__PERSISTENT_ATTRIBUTE; + + /** + * The feature id for the 'Target Entity' attribute. + * + * + * @generated + * @ordered + */ + public static final int XML_ONE_TO_ONE__TARGET_ENTITY = XML_SINGLE_RELATIONSHIP_MAPPING__TARGET_ENTITY; + + /** + * The feature id for the 'Specified Target Entity' attribute. + * + * + * @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 'Default Target Entity' attribute. + * + * + * @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 'Resolved Target Entity' reference. + * + * + * @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 'Fetch' attribute. + * + * + * @generated + * @ordered + */ + public static final int XML_ONE_TO_ONE__FETCH = XML_SINGLE_RELATIONSHIP_MAPPING__FETCH; + + /** + * The feature id for the 'Join Columns' containment reference list. + * + * + * @generated + * @ordered + */ + public static final int XML_ONE_TO_ONE__JOIN_COLUMNS = XML_SINGLE_RELATIONSHIP_MAPPING__JOIN_COLUMNS; + + /** + * The feature id for the 'Specified Join Columns' containment reference list. + * + * + * @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 'Default Join Columns' containment reference list. + * + * + * @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 'Mapped By' attribute. + * + * + * @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 'Xml One To One' class. + * + * + * @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 Xml Join Table}' class. + * + * + * @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 'Name' attribute. + * + * + * @generated + * @ordered + */ + public static final int XML_JOIN_TABLE__NAME = ABSTRACT_XML_TABLE__NAME; + + /** + * The feature id for the 'Specified Name' attribute. + * + * + * @generated + * @ordered + */ + public static final int XML_JOIN_TABLE__SPECIFIED_NAME = ABSTRACT_XML_TABLE__SPECIFIED_NAME; + + /** + * The feature id for the 'Default Name' attribute. + * + * + * @generated + * @ordered + */ + public static final int XML_JOIN_TABLE__DEFAULT_NAME = ABSTRACT_XML_TABLE__DEFAULT_NAME; + + /** + * The feature id for the 'Catalog' attribute. + * + * + * @generated + * @ordered + */ + public static final int XML_JOIN_TABLE__CATALOG = ABSTRACT_XML_TABLE__CATALOG; + + /** + * The feature id for the 'Specified Catalog' attribute. + * + * + * @generated + * @ordered + */ + public static final int XML_JOIN_TABLE__SPECIFIED_CATALOG = ABSTRACT_XML_TABLE__SPECIFIED_CATALOG; + + /** + * The feature id for the 'Default Catalog' attribute. + * + * + * @generated + * @ordered + */ + public static final int XML_JOIN_TABLE__DEFAULT_CATALOG = ABSTRACT_XML_TABLE__DEFAULT_CATALOG; + + /** + * The feature id for the 'Schema' attribute. + * + * + * @generated + * @ordered + */ + public static final int XML_JOIN_TABLE__SCHEMA = ABSTRACT_XML_TABLE__SCHEMA; + + /** + * The feature id for the 'Specified Schema' attribute. + * + * + * @generated + * @ordered + */ + public static final int XML_JOIN_TABLE__SPECIFIED_SCHEMA = ABSTRACT_XML_TABLE__SPECIFIED_SCHEMA; + + /** + * The feature id for the 'Default Schema' attribute. + * + * + * @generated + * @ordered + */ + public static final int XML_JOIN_TABLE__DEFAULT_SCHEMA = ABSTRACT_XML_TABLE__DEFAULT_SCHEMA; + + /** + * The feature id for the 'Specified Name For Xml' attribute. + * + * + * @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 'Specified Catalog For Xml' attribute. + * + * + * @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 'Specified Schema For Xml' attribute. + * + * + * @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 'Join Columns' containment reference list. + * + * + * @generated + * @ordered + */ + public static final int XML_JOIN_TABLE__JOIN_COLUMNS = ABSTRACT_XML_TABLE_FEATURE_COUNT + 0; + + /** + * The feature id for the 'Specified Join Columns' containment reference list. + * + * + * @generated + * @ordered + */ + public static final int XML_JOIN_TABLE__SPECIFIED_JOIN_COLUMNS = ABSTRACT_XML_TABLE_FEATURE_COUNT + 1; + + /** + * The feature id for the 'Default Join Columns' containment reference list. + * + * + * @generated + * @ordered + */ + public static final int XML_JOIN_TABLE__DEFAULT_JOIN_COLUMNS = ABSTRACT_XML_TABLE_FEATURE_COUNT + 2; + + /** + * The feature id for the 'Inverse Join Columns' containment reference list. + * + * + * @generated + * @ordered + */ + public static final int XML_JOIN_TABLE__INVERSE_JOIN_COLUMNS = ABSTRACT_XML_TABLE_FEATURE_COUNT + 3; + + /** + * The feature id for the 'Specified Inverse Join Columns' containment reference list. + * + * + * @generated + * @ordered + */ + public static final int XML_JOIN_TABLE__SPECIFIED_INVERSE_JOIN_COLUMNS = ABSTRACT_XML_TABLE_FEATURE_COUNT + 4; + + /** + * The feature id for the 'Default Inverse Join Columns' containment reference list. + * + * + * @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 'Xml Join Table' class. + * + * + * @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 Xml Override}' class. + * + * + * @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 'Name' attribute. + * + * + * @generated + * @ordered + */ + public static final int XML_OVERRIDE__NAME = JpaCorePackage.XML_EOBJECT_FEATURE_COUNT + 0; + + /** + * The number of structural features of the 'Xml Override' class. + * + * + * @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 Xml Attribute Override}' class. + * + * + * @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 'Name' attribute. + * + * + * @generated + * @ordered + */ + public static final int XML_ATTRIBUTE_OVERRIDE__NAME = XML_OVERRIDE__NAME; + + /** + * The feature id for the 'Column' containment reference. + * + * + * @generated + * @ordered + */ + public static final int XML_ATTRIBUTE_OVERRIDE__COLUMN = XML_OVERRIDE_FEATURE_COUNT + 0; + + /** + * The feature id for the 'Column For Xml' reference. + * + * + * @generated + * @ordered + */ + public static final int XML_ATTRIBUTE_OVERRIDE__COLUMN_FOR_XML = XML_OVERRIDE_FEATURE_COUNT + 1; + + /** + * The number of structural features of the 'Xml Attribute Override' class. + * + * + * @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 Xml Association Override}' class. + * + * + * @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 'Name' attribute. + * + * + * @generated + * @ordered + */ + public static final int XML_ASSOCIATION_OVERRIDE__NAME = XML_OVERRIDE__NAME; + + /** + * The feature id for the 'Join Columns' containment reference list. + * + * + * @generated + * @ordered + */ + public static final int XML_ASSOCIATION_OVERRIDE__JOIN_COLUMNS = XML_OVERRIDE_FEATURE_COUNT + 0; + + /** + * The feature id for the 'Specified Join Columns' containment reference list. + * + * + * @generated + * @ordered + */ + public static final int XML_ASSOCIATION_OVERRIDE__SPECIFIED_JOIN_COLUMNS = XML_OVERRIDE_FEATURE_COUNT + 1; + + /** + * The feature id for the 'Default Join Columns' containment reference list. + * + * + * @generated + * @ordered + */ + public static final int XML_ASSOCIATION_OVERRIDE__DEFAULT_JOIN_COLUMNS = XML_OVERRIDE_FEATURE_COUNT + 2; + + /** + * The number of structural features of the 'Xml Association Override' class. + * + * + * @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 Xml Discriminator Column}' class. + * + * + * @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 'Default Name' attribute. + * + * + * @generated + * @ordered + */ + public static final int XML_DISCRIMINATOR_COLUMN__DEFAULT_NAME = JpaCorePackage.XML_EOBJECT_FEATURE_COUNT + 0; + + /** + * The feature id for the 'Specified Name' attribute. + * + * + * @generated + * @ordered + */ + public static final int XML_DISCRIMINATOR_COLUMN__SPECIFIED_NAME = JpaCorePackage.XML_EOBJECT_FEATURE_COUNT + 1; + + /** + * The feature id for the 'Name' attribute. + * + * + * @generated + * @ordered + */ + public static final int XML_DISCRIMINATOR_COLUMN__NAME = JpaCorePackage.XML_EOBJECT_FEATURE_COUNT + 2; + + /** + * The feature id for the 'Discriminator Type' attribute. + * + * + * @generated + * @ordered + */ + public static final int XML_DISCRIMINATOR_COLUMN__DISCRIMINATOR_TYPE = JpaCorePackage.XML_EOBJECT_FEATURE_COUNT + 3; + + /** + * The feature id for the 'Column Definition' attribute. + * + * + * @generated + * @ordered + */ + public static final int XML_DISCRIMINATOR_COLUMN__COLUMN_DEFINITION = JpaCorePackage.XML_EOBJECT_FEATURE_COUNT + 4; + + /** + * The feature id for the 'Default Length' attribute. + * + * + * @generated + * @ordered + */ + public static final int XML_DISCRIMINATOR_COLUMN__DEFAULT_LENGTH = JpaCorePackage.XML_EOBJECT_FEATURE_COUNT + 5; + + /** + * The feature id for the 'Specified Length' attribute. + * + * + * @generated + * @ordered + */ + public static final int XML_DISCRIMINATOR_COLUMN__SPECIFIED_LENGTH = JpaCorePackage.XML_EOBJECT_FEATURE_COUNT + 6; + + /** + * The feature id for the 'Length' attribute. + * + * + * @generated + * @ordered + */ + public static final int XML_DISCRIMINATOR_COLUMN__LENGTH = JpaCorePackage.XML_EOBJECT_FEATURE_COUNT + 7; + + /** + * The feature id for the 'Specified Name For Xml' attribute. + * + * + * @generated + * @ordered + */ + public static final int XML_DISCRIMINATOR_COLUMN__SPECIFIED_NAME_FOR_XML = JpaCorePackage.XML_EOBJECT_FEATURE_COUNT + 8; + + /** + * The feature id for the 'Discriminator Type For Xml' attribute. + * + * + * @generated + * @ordered + */ + public static final int XML_DISCRIMINATOR_COLUMN__DISCRIMINATOR_TYPE_FOR_XML = JpaCorePackage.XML_EOBJECT_FEATURE_COUNT + 9; + + /** + * The feature id for the 'Column Definition For Xml' attribute. + * + * + * @generated + * @ordered + */ + public static final int XML_DISCRIMINATOR_COLUMN__COLUMN_DEFINITION_FOR_XML = JpaCorePackage.XML_EOBJECT_FEATURE_COUNT + 10; + + /** + * The feature id for the 'Specified Length For Xml' attribute. + * + * + * @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 'Xml Discriminator Column' class. + * + * + * @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 Xml Secondary Table}' class. + * + * + * @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 'Name' attribute. + * + * + * @generated + * @ordered + */ + public static final int XML_SECONDARY_TABLE__NAME = ABSTRACT_XML_TABLE__NAME; + + /** + * The feature id for the 'Specified Name' attribute. + * + * + * @generated + * @ordered + */ + public static final int XML_SECONDARY_TABLE__SPECIFIED_NAME = ABSTRACT_XML_TABLE__SPECIFIED_NAME; + + /** + * The feature id for the 'Default Name' attribute. + * + * + * @generated + * @ordered + */ + public static final int XML_SECONDARY_TABLE__DEFAULT_NAME = ABSTRACT_XML_TABLE__DEFAULT_NAME; + + /** + * The feature id for the 'Catalog' attribute. + * + * + * @generated + * @ordered + */ + public static final int XML_SECONDARY_TABLE__CATALOG = ABSTRACT_XML_TABLE__CATALOG; + + /** + * The feature id for the 'Specified Catalog' attribute. + * + * + * @generated + * @ordered + */ + public static final int XML_SECONDARY_TABLE__SPECIFIED_CATALOG = ABSTRACT_XML_TABLE__SPECIFIED_CATALOG; + + /** + * The feature id for the 'Default Catalog' attribute. + * + * + * @generated + * @ordered + */ + public static final int XML_SECONDARY_TABLE__DEFAULT_CATALOG = ABSTRACT_XML_TABLE__DEFAULT_CATALOG; + + /** + * The feature id for the 'Schema' attribute. + * + * + * @generated + * @ordered + */ + public static final int XML_SECONDARY_TABLE__SCHEMA = ABSTRACT_XML_TABLE__SCHEMA; + + /** + * The feature id for the 'Specified Schema' attribute. + * + * + * @generated + * @ordered + */ + public static final int XML_SECONDARY_TABLE__SPECIFIED_SCHEMA = ABSTRACT_XML_TABLE__SPECIFIED_SCHEMA; + + /** + * The feature id for the 'Default Schema' attribute. + * + * + * @generated + * @ordered + */ + public static final int XML_SECONDARY_TABLE__DEFAULT_SCHEMA = ABSTRACT_XML_TABLE__DEFAULT_SCHEMA; + + /** + * The feature id for the 'Specified Name For Xml' attribute. + * + * + * @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 'Specified Catalog For Xml' attribute. + * + * + * @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 'Specified Schema For Xml' attribute. + * + * + * @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 'Xml Secondary Table' class. + * + * + * @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 Xml Primary Key Join Column}' class. + * + * + * @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 'Name' attribute. + * + * + * @generated + * @ordered + */ + public static final int XML_PRIMARY_KEY_JOIN_COLUMN__NAME = ABSTRACT_XML_NAMED_COLUMN__NAME; + + /** + * The feature id for the 'Specified Name' attribute. + * + * + * @generated + * @ordered + */ + public static final int XML_PRIMARY_KEY_JOIN_COLUMN__SPECIFIED_NAME = ABSTRACT_XML_NAMED_COLUMN__SPECIFIED_NAME; + + /** + * The feature id for the 'Default Name' attribute. + * + * + * @generated + * @ordered + */ + public static final int XML_PRIMARY_KEY_JOIN_COLUMN__DEFAULT_NAME = ABSTRACT_XML_NAMED_COLUMN__DEFAULT_NAME; + + /** + * The feature id for the 'Column Definition' attribute. + * + * + * @generated + * @ordered + */ + public static final int XML_PRIMARY_KEY_JOIN_COLUMN__COLUMN_DEFINITION = ABSTRACT_XML_NAMED_COLUMN__COLUMN_DEFINITION; + + /** + * The feature id for the 'Specified Name For Xml' attribute. + * + * + * @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 'Column Definition For Xml' attribute. + * + * + * @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 'Referenced Column Name' attribute. + * + * + * @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 'Specified Referenced Column Name' attribute. + * + * + * @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 'Default Referenced Column Name' attribute. + * + * + * @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 'Specified Referenced Column Name For Xml' attribute. + * + * + * @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 'Xml Primary Key Join Column' class. + * + * + * @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 Xml Generated Value}' class. + * + * + * @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 'Strategy' attribute. + * + * + * @generated + * @ordered + */ + public static final int XML_GENERATED_VALUE__STRATEGY = JpaCorePackage.XML_EOBJECT_FEATURE_COUNT + 0; + + /** + * The feature id for the 'Generator' attribute. + * + * + * @generated + * @ordered + */ + public static final int XML_GENERATED_VALUE__GENERATOR = JpaCorePackage.XML_EOBJECT_FEATURE_COUNT + 1; + + /** + * The number of structural features of the 'Xml Generated Value' class. + * + * + * @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 Xml Generator}' class. + * + * + * @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 'Name' attribute. + * + * + * @generated + * @ordered + */ + public static final int XML_GENERATOR__NAME = JpaCorePackage.XML_EOBJECT_FEATURE_COUNT + 0; + + /** + * The feature id for the 'Initial Value' attribute. + * + * + * @generated + * @ordered + */ + public static final int XML_GENERATOR__INITIAL_VALUE = JpaCorePackage.XML_EOBJECT_FEATURE_COUNT + 1; + + /** + * The feature id for the 'Specified Initial Value' attribute. + * + * + * @generated + * @ordered + */ + public static final int XML_GENERATOR__SPECIFIED_INITIAL_VALUE = JpaCorePackage.XML_EOBJECT_FEATURE_COUNT + 2; + + /** + * The feature id for the 'Default Initial Value' attribute. + * + * + * @generated + * @ordered + */ + public static final int XML_GENERATOR__DEFAULT_INITIAL_VALUE = JpaCorePackage.XML_EOBJECT_FEATURE_COUNT + 3; + + /** + * The feature id for the 'Allocation Size' attribute. + * + * + * @generated + * @ordered + */ + public static final int XML_GENERATOR__ALLOCATION_SIZE = JpaCorePackage.XML_EOBJECT_FEATURE_COUNT + 4; + + /** + * The feature id for the 'Specified Allocation Size' attribute. + * + * + * @generated + * @ordered + */ + public static final int XML_GENERATOR__SPECIFIED_ALLOCATION_SIZE = JpaCorePackage.XML_EOBJECT_FEATURE_COUNT + 5; + + /** + * The feature id for the 'Default Allocation Size' attribute. + * + * + * @generated + * @ordered + */ + public static final int XML_GENERATOR__DEFAULT_ALLOCATION_SIZE = JpaCorePackage.XML_EOBJECT_FEATURE_COUNT + 6; + + /** + * The number of structural features of the 'Xml Generator' class. + * + * + * @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 Xml Sequence Generator}' class. + * + * + * @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 'Name' attribute. + * + * + * @generated + * @ordered + */ + public static final int XML_SEQUENCE_GENERATOR__NAME = XML_GENERATOR__NAME; + + /** + * The feature id for the 'Initial Value' attribute. + * + * + * @generated + * @ordered + */ + public static final int XML_SEQUENCE_GENERATOR__INITIAL_VALUE = XML_GENERATOR__INITIAL_VALUE; + + /** + * The feature id for the 'Specified Initial Value' attribute. + * + * + * @generated + * @ordered + */ + public static final int XML_SEQUENCE_GENERATOR__SPECIFIED_INITIAL_VALUE = XML_GENERATOR__SPECIFIED_INITIAL_VALUE; + + /** + * The feature id for the 'Default Initial Value' attribute. + * + * + * @generated + * @ordered + */ + public static final int XML_SEQUENCE_GENERATOR__DEFAULT_INITIAL_VALUE = XML_GENERATOR__DEFAULT_INITIAL_VALUE; + + /** + * The feature id for the 'Allocation Size' attribute. + * + * + * @generated + * @ordered + */ + public static final int XML_SEQUENCE_GENERATOR__ALLOCATION_SIZE = XML_GENERATOR__ALLOCATION_SIZE; + + /** + * The feature id for the 'Specified Allocation Size' attribute. + * + * + * @generated + * @ordered + */ + public static final int XML_SEQUENCE_GENERATOR__SPECIFIED_ALLOCATION_SIZE = XML_GENERATOR__SPECIFIED_ALLOCATION_SIZE; + + /** + * The feature id for the 'Default Allocation Size' attribute. + * + * + * @generated + * @ordered + */ + public static final int XML_SEQUENCE_GENERATOR__DEFAULT_ALLOCATION_SIZE = XML_GENERATOR__DEFAULT_ALLOCATION_SIZE; + + /** + * The feature id for the 'Sequence Name' attribute. + * + * + * @generated + * @ordered + */ + public static final int XML_SEQUENCE_GENERATOR__SEQUENCE_NAME = XML_GENERATOR_FEATURE_COUNT + 0; + + /** + * The feature id for the 'Specified Sequence Name' attribute. + * + * + * @generated + * @ordered + */ + public static final int XML_SEQUENCE_GENERATOR__SPECIFIED_SEQUENCE_NAME = XML_GENERATOR_FEATURE_COUNT + 1; + + /** + * The feature id for the 'Default Sequence Name' attribute. + * + * + * @generated + * @ordered + */ + public static final int XML_SEQUENCE_GENERATOR__DEFAULT_SEQUENCE_NAME = XML_GENERATOR_FEATURE_COUNT + 2; + + /** + * The number of structural features of the 'Xml Sequence Generator' class. + * + * + * @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 Xml Table Generator}' class. + * + * + * @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 'Name' attribute. + * + * + * @generated + * @ordered + */ + public static final int XML_TABLE_GENERATOR__NAME = XML_GENERATOR__NAME; + + /** + * The feature id for the 'Initial Value' attribute. + * + * + * @generated + * @ordered + */ + public static final int XML_TABLE_GENERATOR__INITIAL_VALUE = XML_GENERATOR__INITIAL_VALUE; + + /** + * The feature id for the 'Specified Initial Value' attribute. + * + * + * @generated + * @ordered + */ + public static final int XML_TABLE_GENERATOR__SPECIFIED_INITIAL_VALUE = XML_GENERATOR__SPECIFIED_INITIAL_VALUE; + + /** + * The feature id for the 'Default Initial Value' attribute. + * + * + * @generated + * @ordered + */ + public static final int XML_TABLE_GENERATOR__DEFAULT_INITIAL_VALUE = XML_GENERATOR__DEFAULT_INITIAL_VALUE; + + /** + * The feature id for the 'Allocation Size' attribute. + * + * + * @generated + * @ordered + */ + public static final int XML_TABLE_GENERATOR__ALLOCATION_SIZE = XML_GENERATOR__ALLOCATION_SIZE; + + /** + * The feature id for the 'Specified Allocation Size' attribute. + * + * + * @generated + * @ordered + */ + public static final int XML_TABLE_GENERATOR__SPECIFIED_ALLOCATION_SIZE = XML_GENERATOR__SPECIFIED_ALLOCATION_SIZE; + + /** + * The feature id for the 'Default Allocation Size' attribute. + * + * + * @generated + * @ordered + */ + public static final int XML_TABLE_GENERATOR__DEFAULT_ALLOCATION_SIZE = XML_GENERATOR__DEFAULT_ALLOCATION_SIZE; + + /** + * The feature id for the 'Table' attribute. + * + * + * @generated + * @ordered + */ + public static final int XML_TABLE_GENERATOR__TABLE = XML_GENERATOR_FEATURE_COUNT + 0; + + /** + * The feature id for the 'Specified Table' attribute. + * + * + * @generated + * @ordered + */ + public static final int XML_TABLE_GENERATOR__SPECIFIED_TABLE = XML_GENERATOR_FEATURE_COUNT + 1; + + /** + * The feature id for the 'Default Table' attribute. + * + * + * @generated + * @ordered + */ + public static final int XML_TABLE_GENERATOR__DEFAULT_TABLE = XML_GENERATOR_FEATURE_COUNT + 2; + + /** + * The feature id for the 'Catalog' attribute. + * + * + * @generated + * @ordered + */ + public static final int XML_TABLE_GENERATOR__CATALOG = XML_GENERATOR_FEATURE_COUNT + 3; + + /** + * The feature id for the 'Specified Catalog' attribute. + * + * + * @generated + * @ordered + */ + public static final int XML_TABLE_GENERATOR__SPECIFIED_CATALOG = XML_GENERATOR_FEATURE_COUNT + 4; + + /** + * The feature id for the 'Default Catalog' attribute. + * + * + * @generated + * @ordered + */ + public static final int XML_TABLE_GENERATOR__DEFAULT_CATALOG = XML_GENERATOR_FEATURE_COUNT + 5; + + /** + * The feature id for the 'Schema' attribute. + * + * + * @generated + * @ordered + */ + public static final int XML_TABLE_GENERATOR__SCHEMA = XML_GENERATOR_FEATURE_COUNT + 6; + + /** + * The feature id for the 'Specified Schema' attribute. + * + * + * @generated + * @ordered + */ + public static final int XML_TABLE_GENERATOR__SPECIFIED_SCHEMA = XML_GENERATOR_FEATURE_COUNT + 7; + + /** + * The feature id for the 'Default Schema' attribute. + * + * + * @generated + * @ordered + */ + public static final int XML_TABLE_GENERATOR__DEFAULT_SCHEMA = XML_GENERATOR_FEATURE_COUNT + 8; + + /** + * The feature id for the 'Pk Column Name' attribute. + * + * + * @generated + * @ordered + */ + public static final int XML_TABLE_GENERATOR__PK_COLUMN_NAME = XML_GENERATOR_FEATURE_COUNT + 9; + + /** + * The feature id for the 'Specified Pk Column Name' attribute. + * + * + * @generated + * @ordered + */ + public static final int XML_TABLE_GENERATOR__SPECIFIED_PK_COLUMN_NAME = XML_GENERATOR_FEATURE_COUNT + 10; + + /** + * The feature id for the 'Default Pk Column Name' attribute. + * + * + * @generated + * @ordered + */ + public static final int XML_TABLE_GENERATOR__DEFAULT_PK_COLUMN_NAME = XML_GENERATOR_FEATURE_COUNT + 11; + + /** + * The feature id for the 'Value Column Name' attribute. + * + * + * @generated + * @ordered + */ + public static final int XML_TABLE_GENERATOR__VALUE_COLUMN_NAME = XML_GENERATOR_FEATURE_COUNT + 12; + + /** + * The feature id for the 'Specified Value Column Name' attribute. + * + * + * @generated + * @ordered + */ + public static final int XML_TABLE_GENERATOR__SPECIFIED_VALUE_COLUMN_NAME = XML_GENERATOR_FEATURE_COUNT + 13; + + /** + * The feature id for the 'Default Value Column Name' attribute. + * + * + * @generated + * @ordered + */ + public static final int XML_TABLE_GENERATOR__DEFAULT_VALUE_COLUMN_NAME = XML_GENERATOR_FEATURE_COUNT + 14; + + /** + * The feature id for the 'Pk Column Value' attribute. + * + * + * @generated + * @ordered + */ + public static final int XML_TABLE_GENERATOR__PK_COLUMN_VALUE = XML_GENERATOR_FEATURE_COUNT + 15; + + /** + * The feature id for the 'Specified Pk Column Value' attribute. + * + * + * @generated + * @ordered + */ + public static final int XML_TABLE_GENERATOR__SPECIFIED_PK_COLUMN_VALUE = XML_GENERATOR_FEATURE_COUNT + 16; + + /** + * The feature id for the 'Default Pk Column Value' attribute. + * + * + * @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 'Xml Table Generator' class. + * + * + * @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 Xml Order By}' class. + * + * + * @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 'Value' attribute. + * + * + * @generated + * @ordered + */ + public static final int XML_ORDER_BY__VALUE = JpaCorePackage.XML_EOBJECT_FEATURE_COUNT + 0; + + /** + * The feature id for the 'Type' attribute. + * + * + * @generated + * @ordered + */ + public static final int XML_ORDER_BY__TYPE = JpaCorePackage.XML_EOBJECT_FEATURE_COUNT + 1; + + /** + * The number of structural features of the 'Xml Order By' class. + * + * + * @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 Abstract Xml Query}' class. + * + * + * @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 'Name' attribute. + * + * + * @generated + * @ordered + */ + public static final int ABSTRACT_XML_QUERY__NAME = JpaCorePackage.XML_EOBJECT_FEATURE_COUNT + 0; + + /** + * The feature id for the 'Query' attribute. + * + * + * @generated + * @ordered + */ + public static final int ABSTRACT_XML_QUERY__QUERY = JpaCorePackage.XML_EOBJECT_FEATURE_COUNT + 1; + + /** + * The feature id for the 'Hints' containment reference list. + * + * + * @generated + * @ordered + */ + public static final int ABSTRACT_XML_QUERY__HINTS = JpaCorePackage.XML_EOBJECT_FEATURE_COUNT + 2; + + /** + * The number of structural features of the 'Abstract Xml Query' class. + * + * + * @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 Xml Named Query}' class. + * + * + * @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 'Name' attribute. + * + * + * @generated + * @ordered + */ + public static final int XML_NAMED_QUERY__NAME = ABSTRACT_XML_QUERY__NAME; + + /** + * The feature id for the 'Query' attribute. + * + * + * @generated + * @ordered + */ + public static final int XML_NAMED_QUERY__QUERY = ABSTRACT_XML_QUERY__QUERY; + + /** + * The feature id for the 'Hints' containment reference list. + * + * + * @generated + * @ordered + */ + public static final int XML_NAMED_QUERY__HINTS = ABSTRACT_XML_QUERY__HINTS; + + /** + * The number of structural features of the 'Xml Named Query' class. + * + * + * @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 Xml Named Native Query}' class. + * + * + * @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 'Name' attribute. + * + * + * @generated + * @ordered + */ + public static final int XML_NAMED_NATIVE_QUERY__NAME = ABSTRACT_XML_QUERY__NAME; + + /** + * The feature id for the 'Query' attribute. + * + * + * @generated + * @ordered + */ + public static final int XML_NAMED_NATIVE_QUERY__QUERY = ABSTRACT_XML_QUERY__QUERY; + + /** + * The feature id for the 'Hints' containment reference list. + * + * + * @generated + * @ordered + */ + public static final int XML_NAMED_NATIVE_QUERY__HINTS = ABSTRACT_XML_QUERY__HINTS; + + /** + * The feature id for the 'Result Class' attribute. + * + * + * @generated + * @ordered + */ + public static final int XML_NAMED_NATIVE_QUERY__RESULT_CLASS = ABSTRACT_XML_QUERY_FEATURE_COUNT + 0; + + /** + * The feature id for the 'Result Set Mapping' attribute. + * + * + * @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 'Xml Named Native Query' class. + * + * + * @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 Xml Query Hint}' class. + * + * + * @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 'Name' attribute. + * + * + * @generated + * @ordered + */ + public static final int XML_QUERY_HINT__NAME = JpaCorePackage.XML_EOBJECT_FEATURE_COUNT + 0; + + /** + * The feature id for the 'Value' attribute. + * + * + * @generated + * @ordered + */ + public static final int XML_QUERY_HINT__VALUE = JpaCorePackage.XML_EOBJECT_FEATURE_COUNT + 1; + + /** + * The number of structural features of the 'Xml Query Hint' class. + * + * + * @generated + * @ordered + */ + public static final int XML_QUERY_HINT_FEATURE_COUNT = JpaCorePackage.XML_EOBJECT_FEATURE_COUNT + 2; + + /** + * + * + * @generated + */ + private EClass xmlRootContentNodeEClass = null; + + /** + * + * + * @generated + */ + private EClass entityMappingsInternalEClass = null; + + /** + * + * + * @generated + */ + private EClass entityMappingsEClass = null; + + /** + * + * + * @generated + */ + private EClass entityMappingsForXmlEClass = null; + + /** + * + * + * @generated + */ + private EClass xmlTypeMappingEClass = null; + + /** + * + * + * @generated + */ + private EClass xmlPersistentTypeEClass = null; + + /** + * + * + * @generated + */ + private EClass xmlEntityEClass = null; + + /** + * + * + * @generated + */ + private EClass xmlEmbeddableEClass = null; + + /** + * + * + * @generated + */ + private EClass xmlAttributeMappingEClass = null; + + /** + * + * + * @generated + */ + private EClass xmlNullAttributeMappingEClass = null; + + /** + * + * + * @generated + */ + private EClass xmlPersistentAttributeEClass = null; + + /** + * + * + * @generated + */ + private EClass xmlBasicEClass = null; + + /** + * + * + * @generated + */ + private EClass xmlIdEClass = null; + + /** + * + * + * @generated + */ + private EClass xmlTransientEClass = null; + + /** + * + * + * @generated + */ + private EClass xmlEmbeddedEClass = null; + + /** + * + * + * @generated + */ + private EClass xmlEmbeddedIdEClass = null; + + /** + * + * + * @generated + */ + private EClass xmlVersionEClass = null; + + /** + * + * + * @generated + */ + private EClass xmlMultiRelationshipMappingInternalEClass = null; + + /** + * + * + * @generated + */ + private EClass xmlMultiRelationshipMappingForXmlEClass = null; + + /** + * + * + * @generated + */ + private EClass xmlMultiRelationshipMappingEClass = null; + + /** + * + * + * @generated + */ + private EClass xmlOneToManyEClass = null; + + /** + * + * + * @generated + */ + private EClass xmlManyToManyEClass = null; + + /** + * + * + * @generated + */ + private EClass persistenceUnitMetadataInternalEClass = null; + + /** + * + * + * @generated + */ + private EClass persistenceUnitMetadataEClass = null; + + /** + * + * + * @generated + */ + private EClass persistenceUnitMetadataForXmlEClass = null; + + /** + * + * + * @generated + */ + private EClass persistenceUnitDefaultsInternalEClass = null; + + /** + * + * + * @generated + */ + private EClass persistenceUnitDefaultsEClass = null; + + /** + * + * + * @generated + */ + private EClass persistenceUnitDefaultsForXmlEClass = null; + + /** + * + * + * @generated + */ + private EClass xmlTableEClass = null; + + /** + * + * + * @generated + */ + private EClass abstractXmlNamedColumnEClass = null; + + /** + * + * + * @generated + */ + private EClass abstractXmlColumnEClass = null; + + /** + * + * + * @generated + */ + private EClass xmlColumnEClass = null; + + /** + * + * + * @generated + */ + private EClass xmlJoinColumnEClass = null; + + /** + * + * + * @generated + */ + private EClass iXmlColumnMappingEClass = null; + + /** + * + * + * @generated + */ + private EClass xmlManyToOneEClass = null; + + /** + * + * + * @generated + */ + private EClass xmlOneToOneEClass = null; + + /** + * + * + * @generated + */ + private EClass xmlSingleRelationshipMappingEClass = null; + + /** + * + * + * @generated + */ + private EClass xmlRelationshipMappingEClass = null; + + /** + * + * + * @generated + */ + private EClass xmlJoinTableEClass = null; + + /** + * + * + * @generated + */ + private EClass abstractXmlTableEClass = null; + + /** + * + * + * @generated + */ + private EClass xmlOverrideEClass = null; + + /** + * + * + * @generated + */ + private EClass xmlAttributeOverrideEClass = null; + + /** + * + * + * @generated + */ + private EClass xmlAssociationOverrideEClass = null; + + /** + * + * + * @generated + */ + private EClass xmlDiscriminatorColumnEClass = null; + + /** + * + * + * @generated + */ + private EClass xmlSecondaryTableEClass = null; + + /** + * + * + * @generated + */ + private EClass xmlPrimaryKeyJoinColumnEClass = null; + + /** + * + * + * @generated + */ + private EClass xmlGeneratedValueEClass = null; + + /** + * + * + * @generated + */ + private EClass xmlGeneratorEClass = null; + + /** + * + * + * @generated + */ + private EClass xmlSequenceGeneratorEClass = null; + + /** + * + * + * @generated + */ + private EClass xmlTableGeneratorEClass = null; + + /** + * + * + * @generated + */ + private EClass xmlOrderByEClass = null; + + /** + * + * + * @generated + */ + private EClass abstractXmlQueryEClass = null; + + /** + * + * + * @generated + */ + private EClass xmlNamedQueryEClass = null; + + /** + * + * + * @generated + */ + private EClass xmlNamedNativeQueryEClass = null; + + /** + * + * + * @generated + */ + private EClass xmlQueryHintEClass = null; + + /** + * + * + * @generated + */ + private EClass xmlMappedSuperclassEClass = null; + + /** + * + * + * @generated + */ + private EClass xmlEntityInternalEClass = null; + + /** + * + * + * @generated + */ + private EClass xmlEntityForXmlEClass = null; + + /** + * Creates an instance of the model Package, registered with + * {@link org.eclipse.emf.ecore.EPackage.Registry EPackage.Registry} by the package + * package URI value. + *

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. + * + * + * @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); + } + + /** + * + * + * @generated + */ + private static boolean isInited = false; + + /** + * Creates, registers, and initializes the Package 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. + *

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. + *

Invocation of this method will not affect any packages that have + * already been initialized. + * + * + * @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 Xml Root Content Node}'. + * + * + * @return the meta object for class 'Xml Root Content Node'. + * @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 Entity Mappings}'. + * + * + * @return the meta object for the reference 'Entity Mappings'. + * @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 Entity Mappings Internal}'. + * + * + * @return the meta object for class 'Entity Mappings Internal'. + * @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 Root}'. + * + * + * @return the meta object for the reference 'Root'. + * @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 Version}'. + * + * + * @return the meta object for the attribute 'Version'. + * @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 Description}'. + * + * + * @return the meta object for the attribute 'Description'. + * @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 Persistence Unit Metadata Internal}'. + * + * + * @return the meta object for the containment reference 'Persistence Unit Metadata Internal'. + * @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 Package Internal}'. + * + * + * @return the meta object for the attribute 'Package Internal'. + * @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 Default Schema}'. + * + * + * @return the meta object for the attribute 'Default Schema'. + * @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 Specified Schema}'. + * + * + * @return the meta object for the attribute 'Specified Schema'. + * @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 Schema}'. + * + * + * @return the meta object for the attribute 'Schema'. + * @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 Default Catalog}'. + * + * + * @return the meta object for the attribute 'Default Catalog'. + * @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 Specified Catalog}'. + * + * + * @return the meta object for the attribute 'Specified Catalog'. + * @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 Catalog}'. + * + * + * @return the meta object for the attribute 'Catalog'. + * @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 Default Access}'. + * + * + * @return the meta object for the attribute 'Default Access'. + * @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 Specified Access}'. + * + * + * @return the meta object for the attribute 'Specified Access'. + * @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 Access}'. + * + * + * @return the meta object for the attribute 'Access'. + * @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 Type Mappings}'. + * + * + * @return the meta object for the containment reference list 'Type Mappings'. + * @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 Persistent Types}'. + * + * + * @return the meta object for the reference list 'Persistent Types'. + * @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 Table Generators}'. + * + * + * @return the meta object for the containment reference list 'Table Generators'. + * @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 Named Queries}'. + * + * + * @return the meta object for the containment reference list 'Named Queries'. + * @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 Named Native Queries}'. + * + * + * @return the meta object for the containment reference list 'Named Native Queries'. + * @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 Sequence Generators}'. + * + * + * @return the meta object for the containment reference list 'Sequence Generators'. + * @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 Entity Mappings}'. + * + * + * @return the meta object for class 'Entity Mappings'. + * @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 Persistence Unit Metadata}'. + * + * + * @return the meta object for the reference 'Persistence Unit Metadata'. + * @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 Package}'. + * + * + * @return the meta object for the attribute 'Package'. + * @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 Entity Mappings For Xml}'. + * + * + * @return the meta object for class 'Entity Mappings For Xml'. + * @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 Persistence Unit Metadata For Xml}'. + * + * + * @return the meta object for the reference 'Persistence Unit Metadata For Xml'. + * @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 Package For Xml}'. + * + * + * @return the meta object for the attribute 'Package For Xml'. + * @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 Xml Type Mapping}'. + * + * + * @return the meta object for class 'Xml Type Mapping'. + * @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 Default Access}'. + * + * + * @return the meta object for the attribute 'Default Access'. + * @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 Specified Access}'. + * + * + * @return the meta object for the attribute 'Specified Access'. + * @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 Access}'. + * + * + * @return the meta object for the attribute 'Access'. + * @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 Metadata Complete}'. + * + * + * @return the meta object for the attribute 'Metadata Complete'. + * @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 Persistent Type}'. + * + * + * @return the meta object for the containment reference 'Persistent Type'. + * @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 Xml Persistent Type}'. + * + * + * @return the meta object for class 'Xml Persistent Type'. + * @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_ Class}'. + * + * + * @return the meta object for the attribute 'Class'. + * @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 Attribute Mappings}'. + * + * + * @return the meta object for the containment reference list 'Attribute Mappings'. + * @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 Specified Attribute Mappings}'. + * + * + * @return the meta object for the containment reference list 'Specified Attribute Mappings'. + * @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 Virtual Attribute Mappings}'. + * + * + * @return the meta object for the containment reference list 'Virtual Attribute Mappings'. + * @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 Persistent Attributes}'. + * + * + * @return the meta object for the reference list 'Persistent Attributes'. + * @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 Specified Persistent Attributes}'. + * + * + * @return the meta object for the reference list 'Specified Persistent Attributes'. + * @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 Virtual Persistent Attributes}'. + * + * + * @return the meta object for the reference list 'Virtual Persistent Attributes'. + * @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 Xml Entity}'. + * + * + * @return the meta object for class 'Xml Entity'. + * @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 Secondary Tables}'. + * + * + * @return the meta object for the containment reference list 'Secondary Tables'. + * @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 Specified Secondary Tables}'. + * + * + * @return the meta object for the containment reference list 'Specified Secondary Tables'. + * @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 Default Secondary Tables}'. + * + * + * @return the meta object for the containment reference list 'Default Secondary Tables'. + * @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 Xml Embeddable}'. + * + * + * @return the meta object for class 'Xml Embeddable'. + * @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 Xml Attribute Mapping}'. + * + * + * @return the meta object for class 'Xml Attribute Mapping'. + * @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 Persistent Attribute}'. + * + * + * @return the meta object for the containment reference 'Persistent Attribute'. + * @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 Xml Null Attribute Mapping}'. + * + * + * @return the meta object for class 'Xml Null Attribute Mapping'. + * @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 Xml Persistent Attribute}'. + * + * + * @return the meta object for class 'Xml Persistent Attribute'. + * @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 Name}'. + * + * + * @return the meta object for the attribute 'Name'. + * @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 Xml Basic}'. + * + * + * @return the meta object for class 'Xml Basic'. + * @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 Xml Id}'. + * + * + * @return the meta object for class 'Xml Id'. + * @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 Xml Transient}'. + * + * + * @return the meta object for class 'Xml Transient'. + * @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 Xml Embedded}'. + * + * + * @return the meta object for class 'Xml Embedded'. + * @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 Xml Embedded Id}'. + * + * + * @return the meta object for class 'Xml Embedded Id'. + * @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 Xml Version}'. + * + * + * @return the meta object for class 'Xml Version'. + * @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 Xml Multi Relationship Mapping Internal}'. + * + * + * @return the meta object for class 'Xml Multi Relationship Mapping Internal'. + * @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 Xml Multi Relationship Mapping For Xml}'. + * + * + * @return the meta object for class 'Xml Multi Relationship Mapping For Xml'. + * @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 Join Table For Xml}'. + * + * + * @return the meta object for the reference 'Join Table For Xml'. + * @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 Order By For Xml}'. + * + * + * @return the meta object for the reference 'Order By For Xml'. + * @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 Xml Multi Relationship Mapping}'. + * + * + * @return the meta object for class 'Xml Multi Relationship Mapping'. + * @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 Xml One To Many}'. + * + * + * @return the meta object for class 'Xml One To Many'. + * @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 Xml Many To Many}'. + * + * + * @return the meta object for class 'Xml Many To Many'. + * @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 Persistence Unit Metadata Internal}'. + * + * + * @return the meta object for class 'Persistence Unit Metadata Internal'. + * @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 Xml Mapping Metadata Complete Internal}'. + * + * + * @return the meta object for the attribute 'Xml Mapping Metadata Complete Internal'. + * @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 Persistence Unit Defaults Internal}'. + * + * + * @return the meta object for the containment reference 'Persistence Unit Defaults Internal'. + * @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 Persistence Unit Metadata}'. + * + * + * @return the meta object for class 'Persistence Unit Metadata'. + * @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 Xml Mapping Metadata Complete}'. + * + * + * @return the meta object for the attribute 'Xml Mapping Metadata Complete'. + * @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 Persistence Unit Defaults}'. + * + * + * @return the meta object for the reference 'Persistence Unit Defaults'. + * @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 Persistence Unit Metadata For Xml}'. + * + * + * @return the meta object for class 'Persistence Unit Metadata For Xml'. + * @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 Xml Mapping Metadata Complete For Xml}'. + * + * + * @return the meta object for the attribute 'Xml Mapping Metadata Complete For Xml'. + * @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 Persistence Unit Defaults For Xml}'. + * + * + * @return the meta object for the reference 'Persistence Unit Defaults For Xml'. + * @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 Persistence Unit Defaults Internal}'. + * + * + * @return the meta object for class 'Persistence Unit Defaults Internal'. + * @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 Schema Internal}'. + * + * + * @return the meta object for the attribute 'Schema Internal'. + * @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 Catalog Internal}'. + * + * + * @return the meta object for the attribute 'Catalog Internal'. + * @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 Access Internal}'. + * + * + * @return the meta object for the attribute 'Access Internal'. + * @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 Cascade Persist Internal}'. + * + * + * @return the meta object for the attribute 'Cascade Persist Internal'. + * @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 Persistence Unit Defaults}'. + * + * + * @return the meta object for class 'Persistence Unit Defaults'. + * @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 Schema}'. + * + * + * @return the meta object for the attribute 'Schema'. + * @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 Catalog}'. + * + * + * @return the meta object for the attribute 'Catalog'. + * @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 Access}'. + * + * + * @return the meta object for the attribute 'Access'. + * @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 Cascade Persist}'. + * + * + * @return the meta object for the attribute 'Cascade Persist'. + * @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 Persistence Unit Defaults For Xml}'. + * + * + * @return the meta object for class 'Persistence Unit Defaults For Xml'. + * @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 Schema For Xml}'. + * + * + * @return the meta object for the attribute 'Schema For Xml'. + * @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 Catalog For Xml}'. + * + * + * @return the meta object for the attribute 'Catalog For Xml'. + * @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 Access For Xml}'. + * + * + * @return the meta object for the attribute 'Access For Xml'. + * @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 Cascade Persist For Xml}'. + * + * + * @return the meta object for the attribute 'Cascade Persist For Xml'. + * @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 Xml Table}'. + * + * + * @return the meta object for class 'Xml Table'. + * @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 Abstract Xml Named Column}'. + * + * + * @return the meta object for class 'Abstract Xml Named Column'. + * @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 Specified Name For Xml}'. + * + * + * @return the meta object for the attribute 'Specified Name For Xml'. + * @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 Column Definition For Xml}'. + * + * + * @return the meta object for the attribute 'Column Definition For Xml'. + * @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 Abstract Xml Column}'. + * + * + * @return the meta object for class 'Abstract Xml Column'. + * @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 Unique For Xml}'. + * + * + * @return the meta object for the attribute 'Unique For Xml'. + * @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 Nullable For Xml}'. + * + * + * @return the meta object for the attribute 'Nullable For Xml'. + * @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 Insertable For Xml}'. + * + * + * @return the meta object for the attribute 'Insertable For Xml'. + * @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 Updatable For Xml}'. + * + * + * @return the meta object for the attribute 'Updatable For Xml'. + * @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 Specified Table For Xml}'. + * + * + * @return the meta object for the attribute 'Specified Table For Xml'. + * @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 Xml Column}'. + * + * + * @return the meta object for class 'Xml Column'. + * @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 Length For Xml}'. + * + * + * @return the meta object for the attribute 'Length For Xml'. + * @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 Precision For Xml}'. + * + * + * @return the meta object for the attribute 'Precision For Xml'. + * @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 Scale For Xml}'. + * + * + * @return the meta object for the attribute 'Scale For Xml'. + * @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 Xml Join Column}'. + * + * + * @return the meta object for class 'Xml Join Column'. + * @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 Specified Referenced Column Name For Xml}'. + * + * + * @return the meta object for the attribute 'Specified Referenced Column Name For Xml'. + * @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 IXml Column Mapping}'. + * + * + * @return the meta object for class 'IXml Column Mapping'. + * @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 Column For Xml}'. + * + * + * @return the meta object for the reference 'Column For Xml'. + * @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 Xml Many To One}'. + * + * + * @return the meta object for class 'Xml Many To One'. + * @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 Xml One To One}'. + * + * + * @return the meta object for class 'Xml One To One'. + * @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 Xml Single Relationship Mapping}'. + * + * + * @return the meta object for class 'Xml Single Relationship Mapping'. + * @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 Xml Relationship Mapping}'. + * + * + * @return the meta object for class 'Xml Relationship Mapping'. + * @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 Xml Join Table}'. + * + * + * @return the meta object for class 'Xml Join Table'. + * @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 Abstract Xml Table}'. + * + * + * @return the meta object for class 'Abstract Xml Table'. + * @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 Specified Name For Xml}'. + * + * + * @return the meta object for the attribute 'Specified Name For Xml'. + * @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 Specified Catalog For Xml}'. + * + * + * @return the meta object for the attribute 'Specified Catalog For Xml'. + * @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 Specified Schema For Xml}'. + * + * + * @return the meta object for the attribute 'Specified Schema For Xml'. + * @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 Xml Override}'. + * + * + * @return the meta object for class 'Xml Override'. + * @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 Xml Attribute Override}'. + * + * + * @return the meta object for class 'Xml Attribute Override'. + * @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 Xml Association Override}'. + * + * + * @return the meta object for class 'Xml Association Override'. + * @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 Xml Discriminator Column}'. + * + * + * @return the meta object for class 'Xml Discriminator Column'. + * @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 Specified Name For Xml}'. + * + * + * @return the meta object for the attribute 'Specified Name For Xml'. + * @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 Discriminator Type For Xml}'. + * + * + * @return the meta object for the attribute 'Discriminator Type For Xml'. + * @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 Column Definition For Xml}'. + * + * + * @return the meta object for the attribute 'Column Definition For Xml'. + * @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 Specified Length For Xml}'. + * + * + * @return the meta object for the attribute 'Specified Length For Xml'. + * @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 Xml Secondary Table}'. + * + * + * @return the meta object for class 'Xml Secondary Table'. + * @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 Xml Primary Key Join Column}'. + * + * + * @return the meta object for class 'Xml Primary Key Join Column'. + * @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 Specified Referenced Column Name For Xml}'. + * + * + * @return the meta object for the attribute 'Specified Referenced Column Name For Xml'. + * @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 Xml Generated Value}'. + * + * + * @return the meta object for class 'Xml Generated Value'. + * @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 Xml Generator}'. + * + * + * @return the meta object for class 'Xml Generator'. + * @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 Xml Sequence Generator}'. + * + * + * @return the meta object for class 'Xml Sequence Generator'. + * @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 Xml Table Generator}'. + * + * + * @return the meta object for class 'Xml Table Generator'. + * @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 Xml Order By}'. + * + * + * @return the meta object for class 'Xml Order By'. + * @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 Abstract Xml Query}'. + * + * + * @return the meta object for class 'Abstract Xml Query'. + * @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 Xml Named Query}'. + * + * + * @return the meta object for class 'Xml Named Query'. + * @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 Xml Named Native Query}'. + * + * + * @return the meta object for class 'Xml Named Native Query'. + * @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 Xml Query Hint}'. + * + * + * @return the meta object for class 'Xml Query Hint'. + * @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. + * + * + * @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 Xml Mapped Superclass}'. + * + * + * @return the meta object for class 'Xml Mapped Superclass'. + * @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 Xml Entity Internal}'. + * + * + * @return the meta object for class 'Xml Entity Internal'. + * @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 Xml Entity For Xml}'. + * + * + * @return the meta object for class 'Xml Entity For Xml'. + * @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 Table For Xml}'. + * + * + * @return the meta object for the reference 'Table For Xml'. + * @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 Discriminator Column For Xml}'. + * + * + * @return the meta object for the reference 'Discriminator Column For Xml'. + * @see org.eclipse.jpt.core.internal.content.orm.XmlEntityForXml#getDiscriminatorColumnForXml() + * @see #getXmlEntityForXml() + * @generated + */ + public EReference getXmlEntityForXml_DiscriminatorColumnForXml() { + return (EReference) xmlEntityForXmlEClass.getEStructuralFeatures().get(1); + } + + /** + * + * + * @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. + * + * + * @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); + } + + /** + * + * + * @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. + * + * + * @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); + } + /** + * + * Defines literals for the meta objects that represent + *

    + *
  • each class,
  • + *
  • each feature of each class,
  • + *
  • each enum,
  • + *
  • and each data type
  • + *
+ * + * @generated + */ + public interface Literals + { + /** + * The meta object literal for the '{@link org.eclipse.jpt.core.internal.content.orm.XmlRootContentNode Xml Root Content Node}' class. + * + * + * @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 'Entity Mappings' reference feature. + * + * + * @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 Entity Mappings Internal}' class. + * + * + * @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 'Root' reference feature. + * + * + * @generated + */ + public static final EReference ENTITY_MAPPINGS_INTERNAL__ROOT = eINSTANCE.getEntityMappingsInternal_Root(); + + /** + * The meta object literal for the 'Version' attribute feature. + * + * + * @generated + */ + public static final EAttribute ENTITY_MAPPINGS_INTERNAL__VERSION = eINSTANCE.getEntityMappingsInternal_Version(); + + /** + * The meta object literal for the 'Description' attribute feature. + * + * + * @generated + */ + public static final EAttribute ENTITY_MAPPINGS_INTERNAL__DESCRIPTION = eINSTANCE.getEntityMappingsInternal_Description(); + + /** + * The meta object literal for the 'Persistence Unit Metadata Internal' containment reference feature. + * + * + * @generated + */ + public static final EReference ENTITY_MAPPINGS_INTERNAL__PERSISTENCE_UNIT_METADATA_INTERNAL = eINSTANCE.getEntityMappingsInternal_PersistenceUnitMetadataInternal(); + + /** + * The meta object literal for the 'Package Internal' attribute feature. + * + * + * @generated + */ + public static final EAttribute ENTITY_MAPPINGS_INTERNAL__PACKAGE_INTERNAL = eINSTANCE.getEntityMappingsInternal_PackageInternal(); + + /** + * The meta object literal for the 'Default Schema' attribute feature. + * + * + * @generated + */ + public static final EAttribute ENTITY_MAPPINGS_INTERNAL__DEFAULT_SCHEMA = eINSTANCE.getEntityMappingsInternal_DefaultSchema(); + + /** + * The meta object literal for the 'Specified Schema' attribute feature. + * + * + * @generated + */ + public static final EAttribute ENTITY_MAPPINGS_INTERNAL__SPECIFIED_SCHEMA = eINSTANCE.getEntityMappingsInternal_SpecifiedSchema(); + + /** + * The meta object literal for the 'Schema' attribute feature. + * + * + * @generated + */ + public static final EAttribute ENTITY_MAPPINGS_INTERNAL__SCHEMA = eINSTANCE.getEntityMappingsInternal_Schema(); + + /** + * The meta object literal for the 'Default Catalog' attribute feature. + * + * + * @generated + */ + public static final EAttribute ENTITY_MAPPINGS_INTERNAL__DEFAULT_CATALOG = eINSTANCE.getEntityMappingsInternal_DefaultCatalog(); + + /** + * The meta object literal for the 'Specified Catalog' attribute feature. + * + * + * @generated + */ + public static final EAttribute ENTITY_MAPPINGS_INTERNAL__SPECIFIED_CATALOG = eINSTANCE.getEntityMappingsInternal_SpecifiedCatalog(); + + /** + * The meta object literal for the 'Catalog' attribute feature. + * + * + * @generated + */ + public static final EAttribute ENTITY_MAPPINGS_INTERNAL__CATALOG = eINSTANCE.getEntityMappingsInternal_Catalog(); + + /** + * The meta object literal for the 'Default Access' attribute feature. + * + * + * @generated + */ + public static final EAttribute ENTITY_MAPPINGS_INTERNAL__DEFAULT_ACCESS = eINSTANCE.getEntityMappingsInternal_DefaultAccess(); + + /** + * The meta object literal for the 'Specified Access' attribute feature. + * + * + * @generated + */ + public static final EAttribute ENTITY_MAPPINGS_INTERNAL__SPECIFIED_ACCESS = eINSTANCE.getEntityMappingsInternal_SpecifiedAccess(); + + /** + * The meta object literal for the 'Access' attribute feature. + * + * + * @generated + */ + public static final EAttribute ENTITY_MAPPINGS_INTERNAL__ACCESS = eINSTANCE.getEntityMappingsInternal_Access(); + + /** + * The meta object literal for the 'Type Mappings' containment reference list feature. + * + * + * @generated + */ + public static final EReference ENTITY_MAPPINGS_INTERNAL__TYPE_MAPPINGS = eINSTANCE.getEntityMappingsInternal_TypeMappings(); + + /** + * The meta object literal for the 'Persistent Types' reference list feature. + * + * + * @generated + */ + public static final EReference ENTITY_MAPPINGS_INTERNAL__PERSISTENT_TYPES = eINSTANCE.getEntityMappingsInternal_PersistentTypes(); + + /** + * The meta object literal for the 'Table Generators' containment reference list feature. + * + * + * @generated + */ + public static final EReference ENTITY_MAPPINGS_INTERNAL__TABLE_GENERATORS = eINSTANCE.getEntityMappingsInternal_TableGenerators(); + + /** + * The meta object literal for the 'Named Queries' containment reference list feature. + * + * + * @generated + */ + public static final EReference ENTITY_MAPPINGS_INTERNAL__NAMED_QUERIES = eINSTANCE.getEntityMappingsInternal_NamedQueries(); + + /** + * The meta object literal for the 'Named Native Queries' containment reference list feature. + * + * + * @generated + */ + public static final EReference ENTITY_MAPPINGS_INTERNAL__NAMED_NATIVE_QUERIES = eINSTANCE.getEntityMappingsInternal_NamedNativeQueries(); + + /** + * The meta object literal for the 'Sequence Generators' containment reference list feature. + * + * + * @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 Entity Mappings}' class. + * + * + * @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 'Persistence Unit Metadata' reference feature. + * + * + * @generated + */ + public static final EReference ENTITY_MAPPINGS__PERSISTENCE_UNIT_METADATA = eINSTANCE.getEntityMappings_PersistenceUnitMetadata(); + + /** + * The meta object literal for the 'Package' attribute feature. + * + * + * @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 Entity Mappings For Xml}' class. + * + * + * @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 'Persistence Unit Metadata For Xml' reference feature. + * + * + * @generated + */ + public static final EReference ENTITY_MAPPINGS_FOR_XML__PERSISTENCE_UNIT_METADATA_FOR_XML = eINSTANCE.getEntityMappingsForXml_PersistenceUnitMetadataForXml(); + + /** + * The meta object literal for the 'Package For Xml' attribute feature. + * + * + * @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 Xml Type Mapping}' class. + * + * + * @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 'Default Access' attribute feature. + * + * + * @generated + */ + public static final EAttribute XML_TYPE_MAPPING__DEFAULT_ACCESS = eINSTANCE.getXmlTypeMapping_DefaultAccess(); + + /** + * The meta object literal for the 'Specified Access' attribute feature. + * + * + * @generated + */ + public static final EAttribute XML_TYPE_MAPPING__SPECIFIED_ACCESS = eINSTANCE.getXmlTypeMapping_SpecifiedAccess(); + + /** + * The meta object literal for the 'Access' attribute feature. + * + * + * @generated + */ + public static final EAttribute XML_TYPE_MAPPING__ACCESS = eINSTANCE.getXmlTypeMapping_Access(); + + /** + * The meta object literal for the 'Metadata Complete' attribute feature. + * + * + * @generated + */ + public static final EAttribute XML_TYPE_MAPPING__METADATA_COMPLETE = eINSTANCE.getXmlTypeMapping_MetadataComplete(); + + /** + * The meta object literal for the 'Persistent Type' containment reference feature. + * + * + * @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 Xml Persistent Type}' class. + * + * + * @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 'Class' attribute feature. + * + * + * @generated + */ + public static final EAttribute XML_PERSISTENT_TYPE__CLASS = eINSTANCE.getXmlPersistentType_Class(); + + /** + * The meta object literal for the 'Attribute Mappings' containment reference list feature. + * + * + * @generated + */ + public static final EReference XML_PERSISTENT_TYPE__ATTRIBUTE_MAPPINGS = eINSTANCE.getXmlPersistentType_AttributeMappings(); + + /** + * The meta object literal for the 'Specified Attribute Mappings' containment reference list feature. + * + * + * @generated + */ + public static final EReference XML_PERSISTENT_TYPE__SPECIFIED_ATTRIBUTE_MAPPINGS = eINSTANCE.getXmlPersistentType_SpecifiedAttributeMappings(); + + /** + * The meta object literal for the 'Virtual Attribute Mappings' containment reference list feature. + * + * + * @generated + */ + public static final EReference XML_PERSISTENT_TYPE__VIRTUAL_ATTRIBUTE_MAPPINGS = eINSTANCE.getXmlPersistentType_VirtualAttributeMappings(); + + /** + * The meta object literal for the 'Persistent Attributes' reference list feature. + * + * + * @generated + */ + public static final EReference XML_PERSISTENT_TYPE__PERSISTENT_ATTRIBUTES = eINSTANCE.getXmlPersistentType_PersistentAttributes(); + + /** + * The meta object literal for the 'Specified Persistent Attributes' reference list feature. + * + * + * @generated + */ + public static final EReference XML_PERSISTENT_TYPE__SPECIFIED_PERSISTENT_ATTRIBUTES = eINSTANCE.getXmlPersistentType_SpecifiedPersistentAttributes(); + + /** + * The meta object literal for the 'Virtual Persistent Attributes' reference list feature. + * + * + * @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 Xml Entity}' class. + * + * + * @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 'Secondary Tables' containment reference list feature. + * + * + * @generated + */ + public static final EReference XML_ENTITY__SECONDARY_TABLES = eINSTANCE.getXmlEntity_SecondaryTables(); + + /** + * The meta object literal for the 'Specified Secondary Tables' containment reference list feature. + * + * + * @generated + */ + public static final EReference XML_ENTITY__SPECIFIED_SECONDARY_TABLES = eINSTANCE.getXmlEntity_SpecifiedSecondaryTables(); + + /** + * The meta object literal for the 'Default Secondary Tables' containment reference list feature. + * + * + * @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 Xml Embeddable}' class. + * + * + * @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 Xml Attribute Mapping}' class. + * + * + * @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 'Persistent Attribute' containment reference feature. + * + * + * @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 Xml Null Attribute Mapping}' class. + * + * + * @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 Xml Persistent Attribute}' class. + * + * + * @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 'Name' attribute feature. + * + * + * @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 Xml Basic}' class. + * + * + * @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 Xml Id}' class. + * + * + * @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 Xml Transient}' class. + * + * + * @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 Xml Embedded}' class. + * + * + * @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 Xml Embedded Id}' class. + * + * + * @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 Xml Version}' class. + * + * + * @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 Xml Multi Relationship Mapping Internal}' class. + * + * + * @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 Xml Multi Relationship Mapping For Xml}' class. + * + * + * @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 'Join Table For Xml' reference feature. + * + * + * @generated + */ + public static final EReference XML_MULTI_RELATIONSHIP_MAPPING_FOR_XML__JOIN_TABLE_FOR_XML = eINSTANCE.getXmlMultiRelationshipMappingForXml_JoinTableForXml(); + + /** + * The meta object literal for the 'Order By For Xml' reference feature. + * + * + * @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 Xml Multi Relationship Mapping}' class. + * + * + * @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 Xml One To Many}' class. + * + * + * @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 Xml Many To Many}' class. + * + * + * @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 Persistence Unit Metadata Internal}' class. + * + * + * @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 'Xml Mapping Metadata Complete Internal' attribute feature. + * + * + * @generated + */ + public static final EAttribute PERSISTENCE_UNIT_METADATA_INTERNAL__XML_MAPPING_METADATA_COMPLETE_INTERNAL = eINSTANCE.getPersistenceUnitMetadataInternal_XmlMappingMetadataCompleteInternal(); + + /** + * The meta object literal for the 'Persistence Unit Defaults Internal' containment reference feature. + * + * + * @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 Persistence Unit Metadata}' class. + * + * + * @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 'Xml Mapping Metadata Complete' attribute feature. + * + * + * @generated + */ + public static final EAttribute PERSISTENCE_UNIT_METADATA__XML_MAPPING_METADATA_COMPLETE = eINSTANCE.getPersistenceUnitMetadata_XmlMappingMetadataComplete(); + + /** + * The meta object literal for the 'Persistence Unit Defaults' reference feature. + * + * + * @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 Persistence Unit Metadata For Xml}' class. + * + * + * @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 'Xml Mapping Metadata Complete For Xml' attribute feature. + * + * + * @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 'Persistence Unit Defaults For Xml' reference feature. + * + * + * @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 Persistence Unit Defaults Internal}' class. + * + * + * @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 'Schema Internal' attribute feature. + * + * + * @generated + */ + public static final EAttribute PERSISTENCE_UNIT_DEFAULTS_INTERNAL__SCHEMA_INTERNAL = eINSTANCE.getPersistenceUnitDefaultsInternal_SchemaInternal(); + + /** + * The meta object literal for the 'Catalog Internal' attribute feature. + * + * + * @generated + */ + public static final EAttribute PERSISTENCE_UNIT_DEFAULTS_INTERNAL__CATALOG_INTERNAL = eINSTANCE.getPersistenceUnitDefaultsInternal_CatalogInternal(); + + /** + * The meta object literal for the 'Access Internal' attribute feature. + * + * + * @generated + */ + public static final EAttribute PERSISTENCE_UNIT_DEFAULTS_INTERNAL__ACCESS_INTERNAL = eINSTANCE.getPersistenceUnitDefaultsInternal_AccessInternal(); + + /** + * The meta object literal for the 'Cascade Persist Internal' attribute feature. + * + * + * @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 Persistence Unit Defaults}' class. + * + * + * @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 'Schema' attribute feature. + * + * + * @generated + */ + public static final EAttribute PERSISTENCE_UNIT_DEFAULTS__SCHEMA = eINSTANCE.getPersistenceUnitDefaults_Schema(); + + /** + * The meta object literal for the 'Catalog' attribute feature. + * + * + * @generated + */ + public static final EAttribute PERSISTENCE_UNIT_DEFAULTS__CATALOG = eINSTANCE.getPersistenceUnitDefaults_Catalog(); + + /** + * The meta object literal for the 'Access' attribute feature. + * + * + * @generated + */ + public static final EAttribute PERSISTENCE_UNIT_DEFAULTS__ACCESS = eINSTANCE.getPersistenceUnitDefaults_Access(); + + /** + * The meta object literal for the 'Cascade Persist' attribute feature. + * + * + * @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 Persistence Unit Defaults For Xml}' class. + * + * + * @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 'Schema For Xml' attribute feature. + * + * + * @generated + */ + public static final EAttribute PERSISTENCE_UNIT_DEFAULTS_FOR_XML__SCHEMA_FOR_XML = eINSTANCE.getPersistenceUnitDefaultsForXml_SchemaForXml(); + + /** + * The meta object literal for the 'Catalog For Xml' attribute feature. + * + * + * @generated + */ + public static final EAttribute PERSISTENCE_UNIT_DEFAULTS_FOR_XML__CATALOG_FOR_XML = eINSTANCE.getPersistenceUnitDefaultsForXml_CatalogForXml(); + + /** + * The meta object literal for the 'Access For Xml' attribute feature. + * + * + * @generated + */ + public static final EAttribute PERSISTENCE_UNIT_DEFAULTS_FOR_XML__ACCESS_FOR_XML = eINSTANCE.getPersistenceUnitDefaultsForXml_AccessForXml(); + + /** + * The meta object literal for the 'Cascade Persist For Xml' attribute feature. + * + * + * @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 Xml Table}' class. + * + * + * @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 Abstract Xml Named Column}' class. + * + * + * @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 'Specified Name For Xml' attribute feature. + * + * + * @generated + */ + public static final EAttribute ABSTRACT_XML_NAMED_COLUMN__SPECIFIED_NAME_FOR_XML = eINSTANCE.getAbstractXmlNamedColumn_SpecifiedNameForXml(); + + /** + * The meta object literal for the 'Column Definition For Xml' attribute feature. + * + * + * @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 Abstract Xml Column}' class. + * + * + * @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 'Unique For Xml' attribute feature. + * + * + * @generated + */ + public static final EAttribute ABSTRACT_XML_COLUMN__UNIQUE_FOR_XML = eINSTANCE.getAbstractXmlColumn_UniqueForXml(); + + /** + * The meta object literal for the 'Nullable For Xml' attribute feature. + * + * + * @generated + */ + public static final EAttribute ABSTRACT_XML_COLUMN__NULLABLE_FOR_XML = eINSTANCE.getAbstractXmlColumn_NullableForXml(); + + /** + * The meta object literal for the 'Insertable For Xml' attribute feature. + * + * + * @generated + */ + public static final EAttribute ABSTRACT_XML_COLUMN__INSERTABLE_FOR_XML = eINSTANCE.getAbstractXmlColumn_InsertableForXml(); + + /** + * The meta object literal for the 'Updatable For Xml' attribute feature. + * + * + * @generated + */ + public static final EAttribute ABSTRACT_XML_COLUMN__UPDATABLE_FOR_XML = eINSTANCE.getAbstractXmlColumn_UpdatableForXml(); + + /** + * The meta object literal for the 'Specified Table For Xml' attribute feature. + * + * + * @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 Xml Column}' class. + * + * + * @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 'Length For Xml' attribute feature. + * + * + * @generated + */ + public static final EAttribute XML_COLUMN__LENGTH_FOR_XML = eINSTANCE.getXmlColumn_LengthForXml(); + + /** + * The meta object literal for the 'Precision For Xml' attribute feature. + * + * + * @generated + */ + public static final EAttribute XML_COLUMN__PRECISION_FOR_XML = eINSTANCE.getXmlColumn_PrecisionForXml(); + + /** + * The meta object literal for the 'Scale For Xml' attribute feature. + * + * + * @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 Xml Join Column}' class. + * + * + * @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 'Specified Referenced Column Name For Xml' attribute feature. + * + * + * @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 IXml Column Mapping}' class. + * + * + * @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 'Column For Xml' reference feature. + * + * + * @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 Xml Many To One}' class. + * + * + * @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 Xml One To One}' class. + * + * + * @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 Xml Single Relationship Mapping}' class. + * + * + * @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 Xml Relationship Mapping}' class. + * + * + * @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 Xml Join Table}' class. + * + * + * @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 Abstract Xml Table}' class. + * + * + * @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 'Specified Name For Xml' attribute feature. + * + * + * @generated + */ + public static final EAttribute ABSTRACT_XML_TABLE__SPECIFIED_NAME_FOR_XML = eINSTANCE.getAbstractXmlTable_SpecifiedNameForXml(); + + /** + * The meta object literal for the 'Specified Catalog For Xml' attribute feature. + * + * + * @generated + */ + public static final EAttribute ABSTRACT_XML_TABLE__SPECIFIED_CATALOG_FOR_XML = eINSTANCE.getAbstractXmlTable_SpecifiedCatalogForXml(); + + /** + * The meta object literal for the 'Specified Schema For Xml' attribute feature. + * + * + * @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 Xml Override}' class. + * + * + * @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 Xml Attribute Override}' class. + * + * + * @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 Xml Association Override}' class. + * + * + * @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 Xml Discriminator Column}' class. + * + * + * @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 'Specified Name For Xml' attribute feature. + * + * + * @generated + */ + public static final EAttribute XML_DISCRIMINATOR_COLUMN__SPECIFIED_NAME_FOR_XML = eINSTANCE.getXmlDiscriminatorColumn_SpecifiedNameForXml(); + + /** + * The meta object literal for the 'Discriminator Type For Xml' attribute feature. + * + * + * @generated + */ + public static final EAttribute XML_DISCRIMINATOR_COLUMN__DISCRIMINATOR_TYPE_FOR_XML = eINSTANCE.getXmlDiscriminatorColumn_DiscriminatorTypeForXml(); + + /** + * The meta object literal for the 'Column Definition For Xml' attribute feature. + * + * + * @generated + */ + public static final EAttribute XML_DISCRIMINATOR_COLUMN__COLUMN_DEFINITION_FOR_XML = eINSTANCE.getXmlDiscriminatorColumn_ColumnDefinitionForXml(); + + /** + * The meta object literal for the 'Specified Length For Xml' attribute feature. + * + * + * @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 Xml Secondary Table}' class. + * + * + * @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 Xml Primary Key Join Column}' class. + * + * + * @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 'Specified Referenced Column Name For Xml' attribute feature. + * + * + * @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 Xml Generated Value}' class. + * + * + * @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 Xml Generator}' class. + * + * + * @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 Xml Sequence Generator}' class. + * + * + * @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 Xml Table Generator}' class. + * + * + * @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 Xml Order By}' class. + * + * + * @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 Abstract Xml Query}' class. + * + * + * @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 Xml Named Query}' class. + * + * + * @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 Xml Named Native Query}' class. + * + * + * @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 Xml Query Hint}' class. + * + * + * @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 Xml Mapped Superclass}' class. + * + * + * @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 Xml Entity Internal}' class. + * + * + * @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 Xml Entity For Xml}' class. + * + * + * @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 'Table For Xml' reference feature. + * + * + * @generated + */ + public static final EReference XML_ENTITY_FOR_XML__TABLE_FOR_XML = eINSTANCE.getXmlEntityForXml_TableForXml(); + + /** + * The meta object literal for the 'Discriminator Column For Xml' reference feature. + * + * + * @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; + +/** + * + * A representation of the model object 'Persistence Unit Defaults'. + * + * + *

+ * The following features are supported: + *

    + *
  • {@link org.eclipse.jpt.core.internal.content.orm.PersistenceUnitDefaults#getSchema Schema}
  • + *
  • {@link org.eclipse.jpt.core.internal.content.orm.PersistenceUnitDefaults#getCatalog Catalog}
  • + *
  • {@link org.eclipse.jpt.core.internal.content.orm.PersistenceUnitDefaults#getAccess Access}
  • + *
  • {@link org.eclipse.jpt.core.internal.content.orm.PersistenceUnitDefaults#isCascadePersist Cascade Persist}
  • + *
+ *

+ * + * @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 'Schema' attribute. + * + *

+ * If the meaning of the 'Schema' attribute isn't clear, + * there really should be more of a description here... + *

+ * + * @return the value of the 'Schema' 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 Schema}' attribute. + * + * + * @param value the new value of the 'Schema' attribute. + * @see #getSchema() + * @generated + */ + void setSchema(String value); + + /** + * Returns the value of the 'Catalog' attribute. + * + *

+ * If the meaning of the 'Catalog' attribute isn't clear, + * there really should be more of a description here... + *

+ * + * @return the value of the 'Catalog' 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 Catalog}' attribute. + * + * + * @param value the new value of the 'Catalog' attribute. + * @see #getCatalog() + * @generated + */ + void setCatalog(String value); + + /** + * Returns the value of the 'Access' attribute. + * The default value is "". + * The literals are from the enumeration {@link org.eclipse.jpt.core.internal.AccessType}. + * + *

+ * If the meaning of the 'Access' attribute isn't clear, + * there really should be more of a description here... + *

+ * + * @return the value of the 'Access' 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 Access}' attribute. + * + * + * @param value the new value of the 'Access' attribute. + * @see org.eclipse.jpt.core.internal.AccessType + * @see #getAccess() + * @generated + */ + void setAccess(AccessType value); + + /** + * Returns the value of the 'Cascade Persist' attribute. + * + *

+ * If the meaning of the 'Cascade Persist' attribute isn't clear, + * there really should be more of a description here... + *

+ * + * @return the value of the 'Cascade Persist' 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 Cascade Persist}' attribute. + * + * + * @param value the new value of the 'Cascade Persist' 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; + +/** + * + * A representation of the model object 'Persistence Unit Defaults For Xml'. + * + * + *

+ * The following features are supported: + *

    + *
  • {@link org.eclipse.jpt.core.internal.content.orm.PersistenceUnitDefaultsForXml#getSchemaForXml Schema For Xml}
  • + *
  • {@link org.eclipse.jpt.core.internal.content.orm.PersistenceUnitDefaultsForXml#getCatalogForXml Catalog For Xml}
  • + *
  • {@link org.eclipse.jpt.core.internal.content.orm.PersistenceUnitDefaultsForXml#getAccessForXml Access For Xml}
  • + *
  • {@link org.eclipse.jpt.core.internal.content.orm.PersistenceUnitDefaultsForXml#isCascadePersistForXml Cascade Persist For Xml}
  • + *
+ *

+ * + * @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 'Schema For Xml' attribute. + * + *

+ * If the meaning of the 'Schema For Xml' attribute isn't clear, + * there really should be more of a description here... + *

+ * + * @return the value of the 'Schema For Xml' 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 Schema For Xml}' attribute. + * + * + * @param value the new value of the 'Schema For Xml' attribute. + * @see #getSchemaForXml() + * @generated + */ + void setSchemaForXml(String value); + + /** + * Returns the value of the 'Catalog For Xml' attribute. + * + *

+ * If the meaning of the 'Catalog For Xml' attribute isn't clear, + * there really should be more of a description here... + *

+ * + * @return the value of the 'Catalog For Xml' 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 Catalog For Xml}' attribute. + * + * + * @param value the new value of the 'Catalog For Xml' attribute. + * @see #getCatalogForXml() + * @generated + */ + void setCatalogForXml(String value); + + /** + * Returns the value of the 'Access For Xml' attribute. + * The default value is "". + * The literals are from the enumeration {@link org.eclipse.jpt.core.internal.AccessType}. + * + *

+ * If the meaning of the 'Access For Xml' attribute isn't clear, + * there really should be more of a description here... + *

+ * + * @return the value of the 'Access For Xml' 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 Access For Xml}' attribute. + * + * + * @param value the new value of the 'Access For Xml' attribute. + * @see org.eclipse.jpt.core.internal.AccessType + * @see #getAccessForXml() + * @generated + */ + void setAccessForXml(AccessType value); + + /** + * Returns the value of the 'Cascade Persist For Xml' attribute. + * + *

+ * If the meaning of the 'Cascade Persist For Xml' attribute isn't clear, + * there really should be more of a description here... + *

+ * + * @return the value of the 'Cascade Persist For Xml' 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 Cascade Persist For Xml}' attribute. + * + * + * @param value the new value of the 'Cascade Persist For Xml' 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; + +/** + * + * A representation of the model object 'Persistence Unit Defaults Internal'. + * + * + *

+ * The following features are supported: + *

    + *
  • {@link org.eclipse.jpt.core.internal.content.orm.PersistenceUnitDefaultsInternal#getSchemaInternal Schema Internal}
  • + *
  • {@link org.eclipse.jpt.core.internal.content.orm.PersistenceUnitDefaultsInternal#getCatalogInternal Catalog Internal}
  • + *
  • {@link org.eclipse.jpt.core.internal.content.orm.PersistenceUnitDefaultsInternal#getAccessInternal Access Internal}
  • + *
  • {@link org.eclipse.jpt.core.internal.content.orm.PersistenceUnitDefaultsInternal#isCascadePersistInternal Cascade Persist Internal}
  • + *
+ *

+ * + * @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() Schema}' attribute. + * + * + * @see #getSchema() + * @generated + * @ordered + */ + protected static final String SCHEMA_EDEFAULT = null; + + /** + * The default value of the '{@link #getCatalog() Catalog}' attribute. + * + * + * @see #getCatalog() + * @generated + * @ordered + */ + protected static final String CATALOG_EDEFAULT = null; + + /** + * The default value of the '{@link #getAccess() Access}' attribute. + * + * + * @see #getAccess() + * @generated + * @ordered + */ + protected static final AccessType ACCESS_EDEFAULT = AccessType.DEFAULT; + + /** + * The default value of the '{@link #isCascadePersist() Cascade Persist}' attribute. + * + * + * @see #isCascadePersist() + * @generated + * @ordered + */ + protected static final boolean CASCADE_PERSIST_EDEFAULT = false; + + /** + * The default value of the '{@link #getSchemaForXml() Schema For Xml}' attribute. + * + * + * @see #getSchemaForXml() + * @generated + * @ordered + */ + protected static final String SCHEMA_FOR_XML_EDEFAULT = null; + + /** + * The default value of the '{@link #getCatalogForXml() Catalog For Xml}' attribute. + * + * + * @see #getCatalogForXml() + * @generated + * @ordered + */ + protected static final String CATALOG_FOR_XML_EDEFAULT = null; + + /** + * The default value of the '{@link #getAccessForXml() Access For Xml}' attribute. + * + * + * @see #getAccessForXml() + * @generated + * @ordered + */ + protected static final AccessType ACCESS_FOR_XML_EDEFAULT = AccessType.DEFAULT; + + /** + * The default value of the '{@link #isCascadePersistForXml() Cascade Persist For Xml}' attribute. + * + * + * @see #isCascadePersistForXml() + * @generated + * @ordered + */ + protected static final boolean CASCADE_PERSIST_FOR_XML_EDEFAULT = false; + + /** + * The default value of the '{@link #getSchemaInternal() Schema Internal}' attribute. + * + * + * @see #getSchemaInternal() + * @generated + * @ordered + */ + protected static final String SCHEMA_INTERNAL_EDEFAULT = null; + + /** + * The cached value of the '{@link #getSchemaInternal() Schema Internal}' attribute. + * + * + * @see #getSchemaInternal() + * @generated + * @ordered + */ + protected String schemaInternal = SCHEMA_INTERNAL_EDEFAULT; + + /** + * The default value of the '{@link #getCatalogInternal() Catalog Internal}' attribute. + * + * + * @see #getCatalogInternal() + * @generated + * @ordered + */ + protected static final String CATALOG_INTERNAL_EDEFAULT = null; + + /** + * The cached value of the '{@link #getCatalogInternal() Catalog Internal}' attribute. + * + * + * @see #getCatalogInternal() + * @generated + * @ordered + */ + protected String catalogInternal = CATALOG_INTERNAL_EDEFAULT; + + /** + * The default value of the '{@link #getAccessInternal() Access Internal}' attribute. + * + * + * @see #getAccessInternal() + * @generated + * @ordered + */ + protected static final AccessType ACCESS_INTERNAL_EDEFAULT = AccessType.DEFAULT; + + /** + * The cached value of the '{@link #getAccessInternal() Access Internal}' attribute. + * + * + * @see #getAccessInternal() + * @generated + * @ordered + */ + protected AccessType accessInternal = ACCESS_INTERNAL_EDEFAULT; + + /** + * The default value of the '{@link #isCascadePersistInternal() Cascade Persist Internal}' attribute. + * + * + * @see #isCascadePersistInternal() + * @generated + * @ordered + */ + protected static final boolean CASCADE_PERSIST_INTERNAL_EDEFAULT = false; + + /** + * The cached value of the '{@link #isCascadePersistInternal() Cascade Persist Internal}' attribute. + * + * + * @see #isCascadePersistInternal() + * @generated + * @ordered + */ + protected boolean cascadePersistInternal = CASCADE_PERSIST_INTERNAL_EDEFAULT; + + /** + * + * + * @generated + */ + protected PersistenceUnitDefaultsInternal() { + super(); + } + + /** + * + * + * @generated + */ + @Override + protected EClass eStaticClass() { + return OrmPackage.Literals.PERSISTENCE_UNIT_DEFAULTS_INTERNAL; + } + + /** + * Returns the value of the 'Access' attribute. + * The default value is "". + * The literals are from the enumeration {@link org.eclipse.jpt.core.internal.content.orm.AccessType}. + * + *

+ * If the meaning of the 'Access' attribute isn't clear, + * there really should be more of a description here... + *

+ * + * @return the value of the 'Access' 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 Access}' 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 'Access' 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 'Catalog' attribute. + * + *

+ * If the meaning of the 'Catalog' attribute isn't clear, + * there really should be more of a description here... + *

+ * + * @return the value of the 'Catalog' 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 Catalog}' 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 'Catalog' 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 'Schema' attribute. + * + *

+ * If the meaning of the 'Schema' attribute isn't clear, + * there really should be more of a description here... + *

+ * + * @return the value of the 'Schema' 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 Schema}' 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 'Schema' 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 'Cascade Persist' attribute. + * + *

+ * If the meaning of the 'Cascade Persist' attribute isn't clear, + * there really should be more of a description here... + *

+ * + * @return the value of the 'Cascade Persist' 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 Cascade Persist}' attribute. + * + * + * @param value the new value of the 'Cascade Persist' 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 'Schema For Xml' attribute. + * + *

+ * If the meaning of the 'Schema For Xml' attribute isn't clear, + * there really should be more of a description here... + *

+ * + * @return the value of the 'Schema For Xml' 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 Schema For Xml}' attribute. + * + * + * @param value the new value of the 'Schema For Xml' 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 'Catalog For Xml' attribute. + * + *

+ * If the meaning of the 'Catalog For Xml' attribute isn't clear, + * there really should be more of a description here... + *

+ * + * @return the value of the 'Catalog For Xml' 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 Catalog For Xml}' attribute. + * + * + * @param value the new value of the 'Catalog For Xml' 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 'Access For Xml' attribute. + * The default value is "". + * The literals are from the enumeration {@link org.eclipse.jpt.core.internal.content.orm.AccessType}. + * + *

+ * If the meaning of the 'Access For Xml' attribute isn't clear, + * there really should be more of a description here... + *

+ * + * @return the value of the 'Access For Xml' 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 Access For Xml}' attribute. + * + * + * @param value the new value of the 'Access For Xml' 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 'Cascade Persist For Xml' attribute. + * + *

+ * If the meaning of the 'Cascade Persist For Xml' attribute isn't clear, + * there really should be more of a description here... + *

+ * + * @return the value of the 'Cascade Persist For Xml' 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 Cascade Persist For Xml}' attribute. + * + * + * @param value the new value of the 'Cascade Persist For Xml' 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 'Schema Internal' attribute. + * + *

+ * If the meaning of the 'Schema Internal' attribute isn't clear, + * there really should be more of a description here... + *

+ * + * @return the value of the 'Schema Internal' 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 Schema Internal}' attribute. + * + * + * @param value the new value of the 'Schema Internal' 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 'Catalog Internal' attribute. + * + *

+ * If the meaning of the 'Catalog Internal' attribute isn't clear, + * there really should be more of a description here... + *

+ * + * @return the value of the 'Catalog Internal' 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 Catalog Internal}' attribute. + * + * + * @param value the new value of the 'Catalog Internal' 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 'Access Internal' attribute. + * The default value is "". + * The literals are from the enumeration {@link org.eclipse.jpt.core.internal.AccessType}. + * + *

+ * If the meaning of the 'Access Internal' attribute isn't clear, + * there really should be more of a description here... + *

+ * + * @return the value of the 'Access Internal' 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 Access Internal}' attribute. + * + * + * @param value the new value of the 'Access Internal' 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 'Cascade Persist Internal' attribute. + * + *

+ * If the meaning of the 'Cascade Persist Internal' attribute isn't clear, + * there really should be more of a description here... + *

+ * + * @return the value of the 'Cascade Persist Internal' 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 Cascade Persist Internal}' attribute. + * + * + * @param value the new value of the 'Cascade Persist Internal' 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)); + } + } + + /** + * + * + * @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); + } + + /** + * + * + * @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); + } + + /** + * + * + * @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); + } + + /** + * + * + * @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); + } + + /** + * + * + * @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); + } + + /** + * + * + * @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); + } + + /** + * + * + * @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; + +/** + * + * A representation of the model object 'Persistence Unit Metadata'. + * + * + *

+ * The following features are supported: + *

    + *
  • {@link org.eclipse.jpt.core.internal.content.orm.PersistenceUnitMetadata#isXmlMappingMetadataComplete Xml Mapping Metadata Complete}
  • + *
  • {@link org.eclipse.jpt.core.internal.content.orm.PersistenceUnitMetadata#getPersistenceUnitDefaults Persistence Unit Defaults}
  • + *
+ *

+ * + * @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 'Xml Mapping Metadata Complete' attribute. + * + *

+ * If the meaning of the 'Xml Mapping Metadata Complete' attribute isn't clear, + * there really should be more of a description here... + *

+ * + * @return the value of the 'Xml Mapping Metadata Complete' 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 Xml Mapping Metadata Complete}' attribute. + * + * + * @param value the new value of the 'Xml Mapping Metadata Complete' attribute. + * @see #isXmlMappingMetadataComplete() + * @generated + */ + void setXmlMappingMetadataComplete(boolean value); + + /** + * Returns the value of the 'Persistence Unit Defaults' reference. + * The default value is "". + * + *

+ * If the meaning of the 'Persistence Unit Defaults' reference isn't clear, + * there really should be more of a description here... + *

+ * + * @return the value of the 'Persistence Unit Defaults' 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; + +/** + * + * A representation of the model object 'Persistence Unit Metadata For Xml'. + * + * + *

+ * The following features are supported: + *

    + *
  • {@link org.eclipse.jpt.core.internal.content.orm.PersistenceUnitMetadataForXml#isXmlMappingMetadataCompleteForXml Xml Mapping Metadata Complete For Xml}
  • + *
  • {@link org.eclipse.jpt.core.internal.content.orm.PersistenceUnitMetadataForXml#getPersistenceUnitDefaultsForXml Persistence Unit Defaults For Xml}
  • + *
+ *

+ * + * @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 'Xml Mapping Metadata Complete For Xml' attribute. + * + *

+ * If the meaning of the 'Xml Mapping Metadata Complete For Xml' attribute isn't clear, + * there really should be more of a description here... + *

+ * + * @return the value of the 'Xml Mapping Metadata Complete For Xml' 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 Xml Mapping Metadata Complete For Xml}' attribute. + * + * + * @param value the new value of the 'Xml Mapping Metadata Complete For Xml' attribute. + * @see #isXmlMappingMetadataCompleteForXml() + * @generated + */ + void setXmlMappingMetadataCompleteForXml(boolean value); + + /** + * Returns the value of the 'Persistence Unit Defaults For Xml' reference. + * The default value is "". + * + *

+ * If the meaning of the 'Persistence Unit Defaults For Xml' reference isn't clear, + * there really should be more of a description here... + *

+ * + * @return the value of the 'Persistence Unit Defaults For Xml' 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 Persistence Unit Defaults For Xml}' reference. + * + * + * @param value the new value of the 'Persistence Unit Defaults For Xml' 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; + +/** + * + * A representation of the model object 'Persistence Unit Metadata Internal'. + * + * + *

+ * The following features are supported: + *

    + *
  • {@link org.eclipse.jpt.core.internal.content.orm.PersistenceUnitMetadataInternal#isXmlMappingMetadataCompleteInternal Xml Mapping Metadata Complete Internal}
  • + *
  • {@link org.eclipse.jpt.core.internal.content.orm.PersistenceUnitMetadataInternal#getPersistenceUnitDefaultsInternal Persistence Unit Defaults Internal}
  • + *
+ *

+ * + * @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() Xml Mapping Metadata Complete For Xml}' attribute. + * + * + * @see #isXmlMappingMetadataCompleteForXml() + * @generated + * @ordered + */ + protected static final boolean XML_MAPPING_METADATA_COMPLETE_FOR_XML_EDEFAULT = false; + + /** + * The default value of the '{@link #isXmlMappingMetadataComplete() Xml Mapping Metadata Complete}' attribute. + * + * + * @see #isXmlMappingMetadataComplete() + * @generated + * @ordered + */ + protected static final boolean XML_MAPPING_METADATA_COMPLETE_EDEFAULT = false; + + /** + * The default value of the '{@link #isXmlMappingMetadataCompleteInternal() Xml Mapping Metadata Complete Internal}' attribute. + * + * + * @see #isXmlMappingMetadataCompleteInternal() + * @generated + * @ordered + */ + protected static final boolean XML_MAPPING_METADATA_COMPLETE_INTERNAL_EDEFAULT = false; + + /** + * The cached value of the '{@link #isXmlMappingMetadataCompleteInternal() Xml Mapping Metadata Complete Internal}' attribute. + * + * + * @see #isXmlMappingMetadataCompleteInternal() + * @generated + * @ordered + */ + protected boolean xmlMappingMetadataCompleteInternal = XML_MAPPING_METADATA_COMPLETE_INTERNAL_EDEFAULT; + + /** + * The cached value of the '{@link #getPersistenceUnitDefaultsInternal() Persistence Unit Defaults Internal}' containment reference. + * + * + * @see #getPersistenceUnitDefaultsInternal() + * @generated + * @ordered + */ + protected PersistenceUnitDefaultsInternal persistenceUnitDefaultsInternal; + + /** + * + * + * @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); + } + + /** + * + * + * @generated + */ + @Override + protected EClass eStaticClass() { + return OrmPackage.Literals.PERSISTENCE_UNIT_METADATA_INTERNAL; + } + + /** + * Returns the value of the 'Xml Mapping Metadata Complete For Xml' attribute. + * + *

+ * API used by the xml translator. Defers to the internal attribute, no actual + * xml attribute is stored in the model. + *

+ * + * @return the value of the 'Xml Mapping Metadata Complete For Xml' 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 Xml Mapping Metadata Complete For Xml}' 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 'Xml Mapping Metadata Complete For Xml' 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 'Persistence Unit Defaults For Xml' reference. + * The default value is "". + * + *

+ * 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. + *

+ * + * @return the value of the 'Persistence Unit Defaults For Xml' 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 Persistence Unit Defaults For Xml}' reference. + * + * + * @param value the new value of the 'Persistence Unit Defaults For Xml' 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 'Xml Mapping Metadata Complete' attribute. + * + *

+ * If the meaning of the 'Xml Mapping Metadata Complete' attribute isn't clear, + * there really should be more of a description here... + *

+ * + * @return the value of the 'Xml Mapping Metadata Complete' 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 Xml Mapping Metadata Complete}' 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 'Xml Mapping Metadata Complete' 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 'Persistence Unit Defaults' reference. + * The default value is "". + * + *

+ * If the meaning of the 'Persistence Unit Defaults' reference isn't clear, + * there really should be more of a description here... + *

+ * + * @return the value of the 'Persistence Unit Defaults' 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 'Xml Mapping Metadata Complete Internal' attribute. + * + *

+ * If the meaning of the 'Xml Mapping Metadata Complete Internal' attribute isn't clear, + * there really should be more of a description here... + *

+ * + * @return the value of the 'Xml Mapping Metadata Complete Internal' 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 Xml Mapping Metadata Complete Internal}' attribute. + * + * + * @param value the new value of the 'Xml Mapping Metadata Complete Internal' 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 'Persistence Unit Defaults Internal' containment reference. + * The default value is "". + * + *

+ * If the meaning of the 'Persistence Unit Defaults Internal' containment reference isn't clear, + * there really should be more of a description here... + *

+ * + * @return the value of the 'Persistence Unit Defaults Internal' 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; + } + + /** + * + * + * @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; + } + + /** + * + * + * @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); + } + + /** + * + * + * @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); + } + + /** + * + * + * @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); + } + + /** + * + * + * @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); + } + + /** + * + * + * @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); + } + + /** + * + * + * @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); + } + + /** + * + * + * @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); + } + + /** + * + * + * @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; + +/** + * + * A representation of the model object 'Xml Association Override'. + * + * + * + * @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() Specified Join Columns}' containment reference list. + * + * + * @see #getSpecifiedJoinColumns() + * @generated + * @ordered + */ + protected EList specifiedJoinColumns; + + /** + * The cached value of the '{@link #getDefaultJoinColumns() Default Join Columns}' containment reference list. + * + * + * @see #getDefaultJoinColumns() + * @generated + * @ordered + */ + protected EList defaultJoinColumns; + + /** + * + * + * @generated + */ + protected XmlAssociationOverride() { + super(); + } + + protected XmlAssociationOverride(IOverride.Owner owner) { + super(owner); + } + + /** + * + * + * @generated + */ + @Override + protected EClass eStaticClass() { + return OrmPackage.Literals.XML_ASSOCIATION_OVERRIDE; + } + + public EList getJoinColumns() { + return this.getSpecifiedJoinColumns().isEmpty() ? this.getDefaultJoinColumns() : this.getSpecifiedJoinColumns(); + } + + /** + * Returns the value of the 'Specified Join Columns' containment reference list. + * The list contents are of type {@link org.eclipse.jpt.core.internal.mappings.IJoinColumn}. + * + *

+ * If the meaning of the 'Specified Join Columns' containment reference list isn't clear, + * there really should be more of a description here... + *

+ * + * @return the value of the 'Specified Join Columns' 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 getSpecifiedJoinColumns() { + if (specifiedJoinColumns == null) { + specifiedJoinColumns = new EObjectContainmentEList(IJoinColumn.class, this, OrmPackage.XML_ASSOCIATION_OVERRIDE__SPECIFIED_JOIN_COLUMNS); + } + return specifiedJoinColumns; + } + + /** + * Returns the value of the 'Default Join Columns' containment reference list. + * The list contents are of type {@link org.eclipse.jpt.core.internal.mappings.IJoinColumn}. + * + *

+ * If the meaning of the 'Default Join Columns' containment reference list isn't clear, + * there really should be more of a description here... + *

+ * + * @return the value of the 'Default Join Columns' 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 getDefaultJoinColumns() { + if (defaultJoinColumns == null) { + defaultJoinColumns = new EObjectContainmentEList(IJoinColumn.class, this, OrmPackage.XML_ASSOCIATION_OVERRIDE__DEFAULT_JOIN_COLUMNS); + } + return defaultJoinColumns; + } + + /** + * + * + * @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); + } + + /** + * + * + * @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); + } + + /** + * + * + * @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) newValue); + return; + case OrmPackage.XML_ASSOCIATION_OVERRIDE__DEFAULT_JOIN_COLUMNS : + getDefaultJoinColumns().clear(); + getDefaultJoinColumns().addAll((Collection) newValue); + return; + } + super.eSet(featureID, newValue); + } + + /** + * + * + * @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); + } + + /** + * + * + * @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); + } + + /** + * + * + * @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); + } + + /** + * + * + * @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; + +/** + * + * A representation of the model object 'Xml Attribute Mapping'. + * Discussion of morphing mappings:
    + + *
  1. 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.... + * + * 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. + * + * + *

    + * The following features are supported: + *

      + *
    • {@link org.eclipse.jpt.core.internal.content.orm.XmlAttributeMapping#getPersistentAttribute Persistent Attribute}
    • + *
    + *

    + * + * @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() Persistent Attribute}' containment reference. + * + * + * @see #getPersistentAttribute() + * @generated + * @ordered + */ + protected XmlPersistentAttribute persistentAttribute; + + /** + * + * + * @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); + } + }; + } + + /** + * + * + * @generated + */ + @Override + protected EClass eStaticClass() { + return OrmPackage.Literals.XML_ATTRIBUTE_MAPPING; + } + + public XmlPersistentType getPersistentType() { + return (XmlPersistentType) eContainer(); + } + + /** + * Returns the value of the 'Persistent Attribute' containment reference. + * + *

    + * If the meaning of the 'Persistent Attribute' containment reference isn't clear, + * there really should be more of a description here... + *

    + * + * @return the value of the 'Persistent Attribute' 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; + } + + /** + * + * + * @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 Persistent Attribute}' containment reference. + * + * + * @param value the new value of the 'Persistent Attribute' 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; + } + + /** + * + * + * @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); + } + + /** + * + * + * @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); + } + + /** + * + * + * @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); + } + + /** + * + * + * @generated + */ + @Override + public void eUnset(int featureID) { + switch (featureID) { + case OrmPackage.XML_ATTRIBUTE_MAPPING__PERSISTENT_ATTRIBUTE : + setPersistentAttribute((XmlPersistentAttribute) null); + return; + } + super.eUnset(featureID); + } + + /** + * + * + * @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; + +/** + * + * A representation of the model object 'Xml Attribute Override'. + * + * + * + * @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() Column}' containment reference. + * + * + * @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()); + } + }; + } + + /** + * + * + * @generated + */ + @Override + protected EClass eStaticClass() { + return OrmPackage.Literals.XML_ATTRIBUTE_OVERRIDE; + } + + /** + * Returns the value of the 'Column' containment reference. + * + *

    + * If the meaning of the 'Column' containment reference isn't clear, + * there really should be more of a description here... + *

    + * + * @return the value of the 'Column' 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; + } + + /** + * + * + * @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 'Column For Xml' reference. + * + *

    + * If the meaning of the 'Column For Xml' reference isn't clear, + * there really should be more of a description here... + *

    + * + * @return the value of the 'Column For Xml' 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 Column For Xml}' reference. + * + * + * @param value the new value of the 'Column For Xml' 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(); + } + } + + /** + * + * + * @model + * @generated NOT + */ + public void makeColumnForXmlNonNull() { + setColumnForXmlGen(getColumnForXml()); + } + + /** + * + * + * @model + * @generated NOT + */ + public void makeColumnForXmlNull() { + setColumnForXmlGen(null); + } + + /** + * + * + * @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); + } + + /** + * + * + * @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); + } + + /** + * + * + * @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); + } + + /** + * + * + * @generated + */ + @Override + public void eUnset(int featureID) { + switch (featureID) { + case OrmPackage.XML_ATTRIBUTE_OVERRIDE__COLUMN_FOR_XML : + setColumnForXml((XmlColumn) null); + return; + } + super.eUnset(featureID); + } + + /** + * + * + * @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); + } + + /** + * + * + * @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); + } + + /** + * + * + * @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; + +/** + * + * A representation of the model object 'Xml Basic'. + * + * + * + * @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() Fetch}' attribute. + * + * + * @see #getFetch() + * @generated + * @ordered + */ + protected static final DefaultEagerFetchType FETCH_EDEFAULT = DefaultEagerFetchType.DEFAULT; + + /** + * The cached value of the '{@link #getFetch() Fetch}' attribute. + * + * + * @see #getFetch() + * @generated + * @ordered + */ + protected DefaultEagerFetchType fetch = FETCH_EDEFAULT; + + /** + * The default value of the '{@link #getOptional() Optional}' attribute. + * + * + * @see #getOptional() + * @generated + * @ordered + */ + protected static final DefaultTrueBoolean OPTIONAL_EDEFAULT = DefaultTrueBoolean.DEFAULT; + + /** + * The cached value of the '{@link #getOptional() Optional}' attribute. + * + * + * @see #getOptional() + * @generated + * @ordered + */ + protected DefaultTrueBoolean optional = OPTIONAL_EDEFAULT; + + /** + * The cached value of the '{@link #getColumn() Column}' containment reference. + * + * + * @see #getColumn() + * @generated + * @ordered + */ + protected IColumn column; + + /** + * The default value of the '{@link #isLob() Lob}' attribute. + * + * + * @see #isLob() + * @generated + * @ordered + */ + protected static final boolean LOB_EDEFAULT = false; + + /** + * The cached value of the '{@link #isLob() Lob}' attribute. + * + * + * @see #isLob() + * @generated + * @ordered + */ + protected boolean lob = LOB_EDEFAULT; + + /** + * The default value of the '{@link #getTemporal() Temporal}' attribute. + * + * + * @see #getTemporal() + * @generated + * @ordered + */ + protected static final TemporalType TEMPORAL_EDEFAULT = TemporalType.NULL; + + /** + * The cached value of the '{@link #getTemporal() Temporal}' attribute. + * + * + * @see #getTemporal() + * @generated + * @ordered + */ + protected TemporalType temporal = TEMPORAL_EDEFAULT; + + /** + * The default value of the '{@link #getEnumerated() Enumerated}' attribute. + * + * + * @see #getEnumerated() + * @generated + * @ordered + */ + protected static final EnumType ENUMERATED_EDEFAULT = EnumType.DEFAULT; + + /** + * The cached value of the '{@link #getEnumerated() Enumerated}' attribute. + * + * + * @see #getEnumerated() + * @generated + * @ordered + */ + protected EnumType enumerated = ENUMERATED_EDEFAULT; + + /** + * + * + * @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); + } + + /** + * + * + * @generated + */ + @Override + protected EClass eStaticClass() { + return OrmPackage.Literals.XML_BASIC; + } + + /** + * Returns the value of the 'Column' containment reference. + * + *

    + * If the meaning of the 'Column' containment reference isn't clear, + * there really should be more of a description here... + *

    + * + * @return the value of the 'Column' 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; + } + + /** + * + * + * @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 'Fetch' attribute. + * The literals are from the enumeration {@link org.eclipse.jpt.core.internal.mappings.DefaultEagerFetchType}. + * + *

    + * If the meaning of the 'Fetch' attribute isn't clear, + * there really should be more of a description here... + *

    + * + * @return the value of the 'Fetch' 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 Fetch}' attribute. + * + * + * @param value the new value of the 'Fetch' 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 'Optional' attribute. + * The literals are from the enumeration {@link org.eclipse.jpt.core.internal.mappings.DefaultTrueBoolean}. + * + *

    + * If the meaning of the 'Optional' attribute isn't clear, + * there really should be more of a description here... + *

    + * + * @return the value of the 'Optional' 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 Optional}' attribute. + * + * + * @param value the new value of the 'Optional' 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 'Lob' attribute. + * + *

    + * If the meaning of the 'Lob' attribute isn't clear, + * there really should be more of a description here... + *

    + * + * @return the value of the 'Lob' 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 Lob}' attribute. + * + * + * @param value the new value of the 'Lob' 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 'Temporal' attribute. + * The literals are from the enumeration {@link org.eclipse.jpt.core.internal.mappings.TemporalType}. + * + *

    + * If the meaning of the 'Temporal' containment reference isn't clear, + * there really should be more of a description here... + *

    + * + * @return the value of the 'Temporal' 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 Temporal}' attribute. + * + * + * @param value the new value of the 'Temporal' 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 'Enumerated' attribute. + * The literals are from the enumeration {@link org.eclipse.jpt.core.internal.mappings.EnumType}. + * + *

    + * If the meaning of the 'Enumerated' attribute isn't clear, + * there really should be more of a description here... + *

    + * + * @return the value of the 'Enumerated' 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 Enumerated}' attribute. + * + * + * @param value the new value of the 'Enumerated' 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 'Column For Xml' reference. + * + *

    + * If the meaning of the 'Column For Xml' reference isn't clear, + * there really should be more of a description here... + *

    + * + * @return the value of the 'Column For Xml' 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 Column For Xml}' reference. + * + * + * @param value the new value of the 'Column For Xml' 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(); + } + } + + /** + * + * + * @model + * @generated NOT + */ + public void makeColumnForXmlNonNull() { + setColumnForXmlGen(getColumnForXml()); + } + + /** + * + * + * @model + * @generated NOT + */ + public void makeColumnForXmlNull() { + setColumnForXmlGen(null); + } + + /** + * + * + * @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); + } + + /** + * + * + * @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); + } + + /** + * + * + * @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); + } + + /** + * + * + * @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); + } + + /** + * + * + * @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); + } + + /** + * + * + * @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); + } + + /** + * + * + * @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); + } + + /** + * + * + * @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; + +/** + * + * A representation of the model object 'Xml Column'. + * + * + *

    + * The following features are supported: + *

      + *
    • {@link org.eclipse.jpt.core.internal.content.orm.XmlColumn#getLengthForXml Length For Xml}
    • + *
    • {@link org.eclipse.jpt.core.internal.content.orm.XmlColumn#getPrecisionForXml Precision For Xml}
    • + *
    • {@link org.eclipse.jpt.core.internal.content.orm.XmlColumn#getScaleForXml Scale For Xml}
    • + *
    + *

    + * + * @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() Length}' attribute. + * + * + * @see #getLength() + * @generated + * @ordered + */ + protected static final int LENGTH_EDEFAULT = 255; + + /** + * The cached value of the '{@link #getLength() Length}' attribute. + * + * + * @see #getLength() + * @generated + * @ordered + */ + protected int length = LENGTH_EDEFAULT; + + /** + * The default value of the '{@link #getPrecision() Precision}' attribute. + * + * + * @see #getPrecision() + * @generated + * @ordered + */ + protected static final int PRECISION_EDEFAULT = 0; + + /** + * The cached value of the '{@link #getPrecision() Precision}' attribute. + * + * + * @see #getPrecision() + * @generated + * @ordered + */ + protected int precision = PRECISION_EDEFAULT; + + /** + * The default value of the '{@link #getScale() Scale}' attribute. + * + * + * @see #getScale() + * @generated + * @ordered + */ + protected static final int SCALE_EDEFAULT = 0; + + /** + * The cached value of the '{@link #getScale() Scale}' attribute. + * + * + * @see #getScale() + * @generated + * @ordered + */ + protected int scale = SCALE_EDEFAULT; + + /** + * The default value of the '{@link #getLengthForXml() Length For Xml}' attribute. + * + * + * @see #getLengthForXml() + * @generated + * @ordered + */ + protected static final int LENGTH_FOR_XML_EDEFAULT = 255; + + /** + * The default value of the '{@link #getPrecisionForXml() Precision For Xml}' attribute. + * + * + * @see #getPrecisionForXml() + * @generated + * @ordered + */ + protected static final int PRECISION_FOR_XML_EDEFAULT = 0; + + /** + * The default value of the '{@link #getScaleForXml() Scale For Xml}' attribute. + * + * + * @see #getScaleForXml() + * @generated + * @ordered + */ + protected static final int SCALE_FOR_XML_EDEFAULT = 0; + + /** + * + * + * @generated + */ + protected XmlColumn() { + super(); + } + + protected XmlColumn(IColumn.Owner owner) { + super(owner); + } + + @Override + protected void addInsignificantXmlFeatureIdsTo(Set 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); + } + + /** + * + * + * @generated + */ + @Override + protected EClass eStaticClass() { + return OrmPackage.Literals.XML_COLUMN; + } + + /** + * Returns the value of the 'Length' attribute. + * The default value is "255". + * + *

    + * If the meaning of the 'Length' attribute isn't clear, + * there really should be more of a description here... + *

    + * + * @return the value of the 'Length' 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 Length}' attribute. + * + * + * @param value the new value of the 'Length' 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 'Precision' attribute. + * + *

    + * If the meaning of the 'Precision' attribute isn't clear, + * there really should be more of a description here... + *

    + * + * @return the value of the 'Precision' 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 Precision}' attribute. + * + * + * @param value the new value of the 'Precision' 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 'Scale' attribute. + * + *

    + * If the meaning of the 'Scale' attribute isn't clear, + * there really should be more of a description here... + *

    + * + * @return the value of the 'Scale' 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 Scale}' attribute. + * + * + * @param value the new value of the 'Scale' 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 'Length For Xml' attribute. + * The default value is "255". + * + *

    + * If the meaning of the 'Length For Xml' attribute isn't clear, + * there really should be more of a description here... + *

    + * + * @return the value of the 'Length For Xml' 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 Length For Xml}' attribute. + * + * + * @param value the new value of the 'Length For Xml' 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 'Precision For Xml' attribute. + * + *

    + * If the meaning of the 'Precision For Xml' attribute isn't clear, + * there really should be more of a description here... + *

    + * + * @return the value of the 'Precision For Xml' 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 Precision For Xml}' attribute. + * + * + * @param value the new value of the 'Precision For Xml' 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 'Scale For Xml' attribute. + * + *

    + * If the meaning of the 'Scale For Xml' attribute isn't clear, + * there really should be more of a description here... + *

    + * + * @return the value of the 'Scale For Xml' 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 Scale For Xml}' attribute. + * + * + * @param value the new value of the 'Scale For Xml' 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)); + } + + /** + * + * + * @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); + } + + /** + * + * + * @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); + } + + /** + * + * + * @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); + } + + /** + * + * + * @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); + } + + /** + * + * + * @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); + } + + /** + * + * + * @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); + } + + /** + * + * + * @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; + +/** + * + * A representation of the model object 'Xml Discriminator Column'. + * + * + *

    + * The following features are supported: + *

      + *
    • {@link org.eclipse.jpt.core.internal.content.orm.XmlDiscriminatorColumn#getSpecifiedNameForXml Specified Name For Xml}
    • + *
    • {@link org.eclipse.jpt.core.internal.content.orm.XmlDiscriminatorColumn#getDiscriminatorTypeForXml Discriminator Type For Xml}
    • + *
    • {@link org.eclipse.jpt.core.internal.content.orm.XmlDiscriminatorColumn#getColumnDefinitionForXml Column Definition For Xml}
    • + *
    • {@link org.eclipse.jpt.core.internal.content.orm.XmlDiscriminatorColumn#getSpecifiedLengthForXml Specified Length For Xml}
    • + *
    + *

    + * + * @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() Default Name}' attribute. + * + * + * @see #getDefaultName() + * @generated + * @ordered + */ + protected static final String DEFAULT_NAME_EDEFAULT = null; + + /** + * The cached value of the '{@link #getDefaultName() Default Name}' attribute. + * + * + * @see #getDefaultName() + * @generated + * @ordered + */ + protected String defaultName = DEFAULT_NAME_EDEFAULT; + + /** + * The default value of the '{@link #getSpecifiedName() Specified Name}' attribute. + * + * + * @see #getSpecifiedName() + * @generated + * @ordered + */ + protected static final String SPECIFIED_NAME_EDEFAULT = null; + + /** + * The cached value of the '{@link #getSpecifiedName() Specified Name}' attribute. + * + * + * @see #getSpecifiedName() + * @generated + * @ordered + */ + protected String specifiedName = SPECIFIED_NAME_EDEFAULT; + + /** + * The default value of the '{@link #getName() Name}' attribute. + * + * + * @see #getName() + * @generated + * @ordered + */ + protected static final String NAME_EDEFAULT = null; + + /** + * The default value of the '{@link #getDiscriminatorType() Discriminator Type}' attribute. + * + * + * @see #getDiscriminatorType() + * @generated + * @ordered + */ + protected static final DiscriminatorType DISCRIMINATOR_TYPE_EDEFAULT = DiscriminatorType.DEFAULT; + + /** + * The cached value of the '{@link #getDiscriminatorType() Discriminator Type}' attribute. + * + * + * @see #getDiscriminatorType() + * @generated + * @ordered + */ + protected DiscriminatorType discriminatorType = DISCRIMINATOR_TYPE_EDEFAULT; + + /** + * The default value of the '{@link #getColumnDefinition() Column Definition}' attribute. + * + * + * @see #getColumnDefinition() + * @generated + * @ordered + */ + protected static final String COLUMN_DEFINITION_EDEFAULT = null; + + /** + * The cached value of the '{@link #getColumnDefinition() Column Definition}' attribute. + * + * + * @see #getColumnDefinition() + * @generated + * @ordered + */ + protected String columnDefinition = COLUMN_DEFINITION_EDEFAULT; + + /** + * The default value of the '{@link #getDefaultLength() Default Length}' attribute. + * + * + * @see #getDefaultLength() + * @generated + * @ordered + */ + protected static final int DEFAULT_LENGTH_EDEFAULT = 31; + + /** + * The cached value of the '{@link #getDefaultLength() Default Length}' attribute. + * + * + * @see #getDefaultLength() + * @generated + * @ordered + */ + protected int defaultLength = DEFAULT_LENGTH_EDEFAULT; + + /** + * The default value of the '{@link #getSpecifiedLength() Specified Length}' attribute. + * + * + * @see #getSpecifiedLength() + * @generated + * @ordered + */ + protected static final int SPECIFIED_LENGTH_EDEFAULT = -1; + + /** + * The cached value of the '{@link #getSpecifiedLength() Specified Length}' attribute. + * + * + * @see #getSpecifiedLength() + * @generated + * @ordered + */ + protected int specifiedLength = SPECIFIED_LENGTH_EDEFAULT; + + /** + * The default value of the '{@link #getLength() Length}' attribute. + * + * + * @see #getLength() + * @generated + * @ordered + */ + protected static final int LENGTH_EDEFAULT = 0; + + /** + * The default value of the '{@link #getSpecifiedNameForXml() Specified Name For Xml}' attribute. + * + * + * @see #getSpecifiedNameForXml() + * @generated + * @ordered + */ + protected static final String SPECIFIED_NAME_FOR_XML_EDEFAULT = null; + + /** + * The default value of the '{@link #getDiscriminatorTypeForXml() Discriminator Type For Xml}' attribute. + * + * + * @see #getDiscriminatorTypeForXml() + * @generated + * @ordered + */ + protected static final DiscriminatorType DISCRIMINATOR_TYPE_FOR_XML_EDEFAULT = DiscriminatorType.DEFAULT; + + /** + * The default value of the '{@link #getColumnDefinitionForXml() Column Definition For Xml}' attribute. + * + * + * @see #getColumnDefinitionForXml() + * @generated + * @ordered + */ + protected static final String COLUMN_DEFINITION_FOR_XML_EDEFAULT = null; + + /** + * The default value of the '{@link #getSpecifiedLengthForXml() Specified Length For Xml}' attribute. + * + * + * @see #getSpecifiedLengthForXml() + * @generated + * @ordered + */ + protected static final int SPECIFIED_LENGTH_FOR_XML_EDEFAULT = 0; + + /** + * + * + * @generated + */ + protected XmlDiscriminatorColumn() { + super(); + } + + /** + * + * + * @generated + */ + @Override + protected EClass eStaticClass() { + return OrmPackage.Literals.XML_DISCRIMINATOR_COLUMN; + } + + /** + * Returns the value of the 'Default Name' attribute. + * + *

    + * If the meaning of the 'Default Name' attribute isn't clear, + * there really should be more of a description here... + *

    + * + * @return the value of the 'Default Name' 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 Default Name}' attribute. + * + * + * @param value the new value of the 'Default Name' 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 'Specified Name' attribute. + * + *

    + * If the meaning of the 'Specified Name' attribute isn't clear, + * there really should be more of a description here... + *

    + * + * @return the value of the 'Specified Name' 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 Specified Name}' attribute. + * + * + * @param value the new value of the 'Specified Name' 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 'Name' attribute. + * + *

    + * If the meaning of the 'Name' attribute isn't clear, + * there really should be more of a description here... + *

    + * + * @return the value of the 'Name' 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 'Discriminator Type' attribute. + * The literals are from the enumeration {@link org.eclipse.jpt.core.internal.mappings.DiscriminatorType}. + * + *

    + * If the meaning of the 'Discriminator Type' attribute isn't clear, + * there really should be more of a description here... + *

    + * + * @return the value of the 'Discriminator Type' 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 Discriminator Type}' attribute. + * + * + * @param value the new value of the 'Discriminator Type' 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 'Column Definition' attribute. + * + *

    + * If the meaning of the 'Column Definition' attribute isn't clear, + * there really should be more of a description here... + *

    + * + * @return the value of the 'Column Definition' 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 Column Definition}' attribute. + * + * + * @param value the new value of the 'Column Definition' 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 'Default Length' attribute. + * The default value is "31". + * + *

    + * If the meaning of the 'Default Length' attribute isn't clear, + * there really should be more of a description here... + *

    + * + * @return the value of the 'Default Length' 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 Default Length}' attribute. + * + * + * @param value the new value of the 'Default Length' 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 'Specified Length' attribute. + * The default value is "-1". + * + *

    + * If the meaning of the 'Specified Length' attribute isn't clear, + * there really should be more of a description here... + *

    + * + * @return the value of the 'Specified Length' 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 Specified Length}' attribute. + * + * + * @param value the new value of the 'Specified Length' 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 'Length' attribute. + * + *

    + * If the meaning of the 'Length' attribute isn't clear, + * there really should be more of a description here... + *

    + * + * @return the value of the 'Length' 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 'Specified Name For Xml' attribute. + * + *

    + * If the meaning of the 'Specified Name For Xml' attribute isn't clear, + * there really should be more of a description here... + *

    + * + * @return the value of the 'Specified Name For Xml' 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 Specified Name For Xml}' attribute. + * + * + * @param value the new value of the 'Specified Name For Xml' 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 'Discriminator Type For Xml' attribute. + * The literals are from the enumeration {@link org.eclipse.jpt.core.internal.mappings.DiscriminatorType}. + * + *

    + * If the meaning of the 'Discriminator Type For Xml' attribute isn't clear, + * there really should be more of a description here... + *

    + * + * @return the value of the 'Discriminator Type For Xml' 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 Discriminator Type For Xml}' attribute. + * + * + * @param value the new value of the 'Discriminator Type For Xml' 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 'Column Definition For Xml' attribute. + * + *

    + * If the meaning of the 'Column Definition For Xml' attribute isn't clear, + * there really should be more of a description here... + *

    + * + * @return the value of the 'Column Definition For Xml' 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 Column Definition For Xml}' attribute. + * + * + * @param value the new value of the 'Column Definition For Xml' 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 'Specified Length For Xml' attribute. + * + *

    + * If the meaning of the 'Specified Length For Xml' attribute isn't clear, + * there really should be more of a description here... + *

    + * + * @return the value of the 'Specified Length For Xml' 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 Specified Length For Xml}' attribute. + * + * + * @param value the new value of the 'Specified Length For Xml' 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)); + } + + /** + * + * + * @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); + } + + /** + * + * + * @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); + } + + /** + * + * + * @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); + } + + /** + * + * + * @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); + } + + /** + * + * + * @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); + } + + /** + * + * + * @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); + } + + /** + * + * + * @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; + +/** + * + * A representation of the model object 'Xml Embeddable'. + * + * + * + * @see org.eclipse.jpt.core.internal.content.orm.OrmPackage#getXmlEmbeddable() + * @model kind="class" + * @generated + */ +public class XmlEmbeddable extends XmlTypeMapping implements IEmbeddable +{ + /** + * + * + * @generated + */ + protected XmlEmbeddable() { + super(); + } + + public String getKey() { + return IMappingKeys.EMBEDDABLE_TYPE_MAPPING_KEY; + } + + /** + * + * + * @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 overridableAssociationNames() { + return EmptyIterator.instance(); + } + + public Iterator 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; + +/** + * + * A representation of the model object 'Xml Embedded'. + * + * + * + * @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() Specified Attribute Overrides}' containment reference list. + * + * + * @see #getSpecifiedAttributeOverrides() + * @generated + * @ordered + */ + protected EList specifiedAttributeOverrides; + + /** + * The cached value of the '{@link #getDefaultAttributeOverrides() Default Attribute Overrides}' containment reference list. + * + * + * @see #getDefaultAttributeOverrides() + * @generated + * @ordered + */ + protected EList defaultAttributeOverrides; + + private IEmbeddable embeddable; + + /** + * + * + * @generated + */ + protected XmlEmbedded() { + super(); + } + + @Override + protected void initializeOn(XmlAttributeMapping newMapping) { + newMapping.initializeFromXmlEmbeddedMapping(this); + } + + /** + * + * + * @generated + */ + @Override + protected EClass eStaticClass() { + return OrmPackage.Literals.XML_EMBEDDED; + } + + public EList getAttributeOverrides() { + EList list = new BasicEList(); + list.addAll(getSpecifiedAttributeOverrides()); + list.addAll(getDefaultAttributeOverrides()); + return list; + } + + /** + * Returns the value of the 'Specified Attribute Overrides' containment reference list. + * The list contents are of type {@link org.eclipse.jpt.core.internal.mappings.IAttributeOverride}. + * + *

    + * If the meaning of the 'Specified Attribute Overrides' containment reference list isn't clear, + * there really should be more of a description here... + *

    + * + * @return the value of the 'Specified Attribute Overrides' 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 getSpecifiedAttributeOverrides() { + if (specifiedAttributeOverrides == null) { + specifiedAttributeOverrides = new EObjectContainmentEList(IAttributeOverride.class, this, OrmPackage.XML_EMBEDDED__SPECIFIED_ATTRIBUTE_OVERRIDES); + } + return specifiedAttributeOverrides; + } + + /** + * Returns the value of the 'Default Attribute Overrides' containment reference list. + * The list contents are of type {@link org.eclipse.jpt.core.internal.mappings.IAttributeOverride}. + * + *

    + * If the meaning of the 'Default Attribute Overrides' containment reference list isn't clear, + * there really should be more of a description here... + *

    + * + * @return the value of the 'Default Attribute Overrides' 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 getDefaultAttributeOverrides() { + if (defaultAttributeOverrides == null) { + defaultAttributeOverrides = new EObjectContainmentEList(IAttributeOverride.class, this, OrmPackage.XML_EMBEDDED__DEFAULT_ATTRIBUTE_OVERRIDES); + } + return defaultAttributeOverrides; + } + + public IEmbeddable embeddable() { + return this.embeddable; + } + + /** + * + * + * @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); + } + + /** + * + * + * @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); + } + + /** + * + * + * @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) newValue); + return; + case OrmPackage.XML_EMBEDDED__DEFAULT_ATTRIBUTE_OVERRIDES : + getDefaultAttributeOverrides().clear(); + getDefaultAttributeOverrides().addAll((Collection) newValue); + return; + } + super.eSet(featureID, newValue); + } + + /** + * + * + * @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); + } + + /** + * + * + * @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); + } + + /** + * + * + * @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); + } + + /** + * + * + * @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 attributeOverrides) { + for (IAttributeOverride attributeOverride : attributeOverrides) { + String attributeOverrideName = attributeOverride.getName(); + if (attributeOverrideName != null && attributeOverrideName.equals(name)) { + return true; + } + } + return false; + } + + public Iterator 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; + +/** + * + * A representation of the model object 'Xml Embedded Id'. + * + * + * + * @see org.eclipse.jpt.core.internal.content.orm.OrmPackage#getXmlEmbeddedId() + * @model kind="class" + * @generated + */ +public class XmlEmbeddedId extends XmlAttributeMapping implements IEmbeddedId +{ + /** + * + * + * @generated + */ + protected XmlEmbeddedId() { + super(); + } + + @Override + protected void initializeOn(XmlAttributeMapping newMapping) { + newMapping.initializeFromXmlEmbeddedIdMapping(this); + } + + /** + * + * + * @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; + +/** + * + * A representation of the model object 'Xml Entity'. + * + * + *

    + * The following features are supported: + *

      + *
    • {@link org.eclipse.jpt.core.internal.content.orm.XmlEntity#getSecondaryTables Secondary Tables}
    • + *
    • {@link org.eclipse.jpt.core.internal.content.orm.XmlEntity#getSpecifiedSecondaryTables Specified Secondary Tables}
    • + *
    • {@link org.eclipse.jpt.core.internal.content.orm.XmlEntity#getDefaultSecondaryTables Default Secondary Tables}
    • + *
    + *

    + * + * @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 'Secondary Tables' containment reference list. + * The list contents are of type {@link org.eclipse.jpt.core.internal.mappings.ISecondaryTable}. + * + *

    + * If the meaning of the 'Secondary Tables' containment reference list isn't clear, + * there really should be more of a description here... + *

    + * + * @return the value of the 'Secondary Tables' 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 getSecondaryTables(); + + /** + * Returns the value of the 'Specified Secondary Tables' containment reference list. + * The list contents are of type {@link org.eclipse.jpt.core.internal.mappings.ISecondaryTable}. + * + *

    + * If the meaning of the 'Specified Secondary Tables' containment reference list isn't clear, + * there really should be more of a description here... + *

    + * + * @return the value of the 'Specified Secondary Tables' 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 getSpecifiedSecondaryTables(); + + /** + * Returns the value of the 'Default Secondary Tables' containment reference list. + * The list contents are of type {@link org.eclipse.jpt.core.internal.mappings.ISecondaryTable}. + * + *

    + * If the meaning of the 'Default Secondary Tables' containment reference list isn't clear, + * there really should be more of a description here... + *

    + * + * @return the value of the 'Default Secondary Tables' 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 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; + +/** + * + * A representation of the model object 'Xml Entity For Xml'. + * + * + *

    + * The following features are supported: + *

      + *
    • {@link org.eclipse.jpt.core.internal.content.orm.XmlEntityForXml#getTableForXml Table For Xml}
    • + *
    • {@link org.eclipse.jpt.core.internal.content.orm.XmlEntityForXml#getDiscriminatorColumnForXml Discriminator Column For Xml}
    • + *
    + *

    + * + * @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 'Table For Xml' reference. + * + *

    + * If the meaning of the 'Table For Xml' reference isn't clear, + * there really should be more of a description here... + *

    + * + * @return the value of the 'Table For Xml' 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 Table For Xml}' reference. + * + * + * @param value the new value of the 'Table For Xml' reference. + * @see #getTableForXml() + * @generated + */ + void setTableForXml(XmlTable value); + + /** + * Returns the value of the 'Discriminator Column For Xml' reference. + * + *

    + * If the meaning of the 'Discriminator Column For Xml' reference isn't clear, + * there really should be more of a description here... + *

    + * + * @return the value of the 'Discriminator Column For Xml' 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 Discriminator Column For Xml}' reference. + * + * + * @param value the new value of the 'Discriminator Column For Xml' 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; + +/** + * + * An implementation of the model object 'Xml Entity'. + * + * + * + * @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() Specified Name}' attribute. + * + * + * @see #getSpecifiedName() + * @generated + * @ordered + */ + protected static final String SPECIFIED_NAME_EDEFAULT = null; + + /** + * The cached value of the '{@link #getSpecifiedName() Specified Name}' attribute. + * + * + * @see #getSpecifiedName() + * @generated + * @ordered + */ + protected String specifiedName = SPECIFIED_NAME_EDEFAULT; + + /** + * The default value of the '{@link #getDefaultName() Default Name}' attribute. + * + * + * @see #getDefaultName() + * @generated + * @ordered + */ + protected static final String DEFAULT_NAME_EDEFAULT = null; + + /** + * The cached value of the '{@link #getDefaultName() Default Name}' attribute. + * + * + * @see #getDefaultName() + * @generated + * @ordered + */ + protected String defaultName = DEFAULT_NAME_EDEFAULT; + + /** + * The cached value of the '{@link #getTable() Table}' containment reference. + * + * + * @see #getTable() + * @generated + * @ordered + */ + protected ITable table; + + /** + * The cached value of the '{@link #getSpecifiedPrimaryKeyJoinColumns() Specified Primary Key Join Columns}' containment reference list. + * + * + * @see #getSpecifiedPrimaryKeyJoinColumns() + * @generated + * @ordered + */ + protected EList specifiedPrimaryKeyJoinColumns; + + /** + * The cached value of the '{@link #getDefaultPrimaryKeyJoinColumns() Default Primary Key Join Columns}' containment reference list. + * + * + * @see #getDefaultPrimaryKeyJoinColumns() + * @generated + * @ordered + */ + protected EList defaultPrimaryKeyJoinColumns; + + /** + * The default value of the '{@link #getInheritanceStrategy() Inheritance Strategy}' attribute. + * + * + * @see #getInheritanceStrategy() + * @generated + * @ordered + */ + protected static final InheritanceType INHERITANCE_STRATEGY_EDEFAULT = InheritanceType.DEFAULT; + + /** + * The cached value of the '{@link #getInheritanceStrategy() Inheritance Strategy}' attribute. + * + * + * @see #getInheritanceStrategy() + * @generated + * @ordered + */ + protected InheritanceType inheritanceStrategy = INHERITANCE_STRATEGY_EDEFAULT; + + /** + * The default value of the '{@link #getDefaultDiscriminatorValue() Default Discriminator Value}' attribute. + * + * + * @see #getDefaultDiscriminatorValue() + * @generated + * @ordered + */ + protected static final String DEFAULT_DISCRIMINATOR_VALUE_EDEFAULT = null; + + /** + * The cached value of the '{@link #getDefaultDiscriminatorValue() Default Discriminator Value}' attribute. + * + * + * @see #getDefaultDiscriminatorValue() + * @generated + * @ordered + */ + protected String defaultDiscriminatorValue = DEFAULT_DISCRIMINATOR_VALUE_EDEFAULT; + + /** + * The default value of the '{@link #getSpecifiedDiscriminatorValue() Specified Discriminator Value}' attribute. + * + * + * @see #getSpecifiedDiscriminatorValue() + * @generated + * @ordered + */ + protected static final String SPECIFIED_DISCRIMINATOR_VALUE_EDEFAULT = null; + + /** + * The cached value of the '{@link #getSpecifiedDiscriminatorValue() Specified Discriminator Value}' attribute. + * + * + * @see #getSpecifiedDiscriminatorValue() + * @generated + * @ordered + */ + protected String specifiedDiscriminatorValue = SPECIFIED_DISCRIMINATOR_VALUE_EDEFAULT; + + /** + * The default value of the '{@link #getDiscriminatorValue() Discriminator Value}' attribute. + * + * + * @see #getDiscriminatorValue() + * @generated + * @ordered + */ + protected static final String DISCRIMINATOR_VALUE_EDEFAULT = null; + + /** + * The cached value of the '{@link #getDiscriminatorColumn() Discriminator Column}' containment reference. + * + * + * @see #getDiscriminatorColumn() + * @generated + * @ordered + */ + protected IDiscriminatorColumn discriminatorColumn; + + /** + * The cached value of the '{@link #getSequenceGenerator() Sequence Generator}' containment reference. + * + * + * @see #getSequenceGenerator() + * @generated + * @ordered + */ + protected ISequenceGenerator sequenceGenerator; + + /** + * The cached value of the '{@link #getTableGenerator() Table Generator}' containment reference. + * + * + * @see #getTableGenerator() + * @generated + * @ordered + */ + protected ITableGenerator tableGenerator; + + /** + * The cached value of the '{@link #getSpecifiedAttributeOverrides() Specified Attribute Overrides}' containment reference list. + * + * + * @see #getSpecifiedAttributeOverrides() + * @generated + * @ordered + */ + protected EList specifiedAttributeOverrides; + + /** + * The cached value of the '{@link #getDefaultAttributeOverrides() Default Attribute Overrides}' containment reference list. + * + * + * @see #getDefaultAttributeOverrides() + * @generated + * @ordered + */ + protected EList defaultAttributeOverrides; + + /** + * The cached value of the '{@link #getSpecifiedAssociationOverrides() Specified Association Overrides}' containment reference list. + * + * + * @see #getSpecifiedAssociationOverrides() + * @generated + * @ordered + */ + protected EList specifiedAssociationOverrides; + + /** + * The cached value of the '{@link #getDefaultAssociationOverrides() Default Association Overrides}' containment reference list. + * + * + * @see #getDefaultAssociationOverrides() + * @generated + * @ordered + */ + protected EList defaultAssociationOverrides; + + /** + * The cached value of the '{@link #getNamedQueries() Named Queries}' containment reference list. + * + * + * @see #getNamedQueries() + * @generated + * @ordered + */ + protected EList namedQueries; + + /** + * The cached value of the '{@link #getNamedNativeQueries() Named Native Queries}' containment reference list. + * + * + * @see #getNamedNativeQueries() + * @generated + * @ordered + */ + protected EList namedNativeQueries; + + /** + * The cached value of the '{@link #getSpecifiedSecondaryTables() Specified Secondary Tables}' containment reference list. + * + * + * @see #getSpecifiedSecondaryTables() + * @generated + * @ordered + */ + protected EList specifiedSecondaryTables; + + /** + * The cached value of the '{@link #getDefaultSecondaryTables() Default Secondary Tables}' containment reference list. + * + * + * @see #getDefaultSecondaryTables() + * @generated + * @ordered + */ + protected EList 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; + } + }; + } + + /** + * + * + * @generated + */ + @Override + protected EClass eStaticClass() { + return OrmPackage.Literals.XML_ENTITY_INTERNAL; + } + + /** + * + * + * @generated NOT + */ + public String getName() { + return (this.getSpecifiedName() == null) ? getDefaultName() : this.getSpecifiedName(); + } + + /** + * Returns the value of the 'Specified Name' attribute. + * + * + * @return the value of the 'Specified Name' 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 Specified Name}' attribute. + * + * + * @param value the new value of the 'Specified Name' 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 'Default Name' attribute. + * + * + * @return the value of the 'Default Name' 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 'Table' containment reference. + * + *

    + * If the meaning of the 'Table' containment reference isn't clear, + * there really should be more of a description here... + *

    + * + * @return the value of the 'Table' 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(); + } + + /** + * + * + * @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 'Secondary Tables' containment reference list. + * The list contents are of type {@link org.eclipse.jpt.core.internal.mappings.ISecondaryTable}. + * + *

    + * If the meaning of the 'Secondary Tables' containment reference list isn't clear, + * there really should be more of a description here... + *

    + * + * @return the value of the 'Secondary Tables' 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 getSecondaryTables() { + EList list = new BasicEList(); + 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 'Specified Secondary Tables' containment reference list. + * The list contents are of type {@link org.eclipse.jpt.core.internal.mappings.ISecondaryTable}. + * + *

    + * If the meaning of the 'Specified Secondary Tables' containment reference list isn't clear, + * there really should be more of a description here... + *

    + * + * @return the value of the 'Specified Secondary Tables' 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 getSpecifiedSecondaryTables() { + if (specifiedSecondaryTables == null) { + specifiedSecondaryTables = new EObjectContainmentEList(ISecondaryTable.class, this, OrmPackage.XML_ENTITY_INTERNAL__SPECIFIED_SECONDARY_TABLES); + } + return specifiedSecondaryTables; + } + + /** + * Returns the value of the 'Default Secondary Tables' containment reference list. + * The list contents are of type {@link org.eclipse.jpt.core.internal.mappings.ISecondaryTable}. + * + *

    + * If the meaning of the 'Default Secondary Tables' containment reference list isn't clear, + * there really should be more of a description here... + *

    + * + * @return the value of the 'Default Secondary Tables' 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 getDefaultSecondaryTables() { + if (defaultSecondaryTables == null) { + defaultSecondaryTables = new EObjectContainmentEList(ISecondaryTable.class, this, OrmPackage.XML_ENTITY_INTERNAL__DEFAULT_SECONDARY_TABLES); + } + return defaultSecondaryTables; + } + + /** + * Returns the value of the 'Inheritance Strategy' attribute. + * The literals are from the enumeration {@link org.eclipse.jpt.core.internal.mappings.InheritanceType}. + * + *

    + * If the meaning of the 'Inheritance Strategy' attribute isn't clear, + * there really should be more of a description here... + *

    + * + * @return the value of the 'Inheritance Strategy' 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 Inheritance Strategy}' attribute. + * + * + * @param value the new value of the 'Inheritance Strategy' 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 'Discriminator Column' containment reference. + * + *

    + * If the meaning of the 'Discriminator Column' containment reference isn't clear, + * there really should be more of a description here... + *

    + * + * @return the value of the 'Discriminator Column' containment reference. + * @see org.eclipse.jpt.core.internal.content.orm.OrmPackage#getIEntity_DiscriminatorColumn() + * @model containment="true" changeable="false" + * @generated + */ + public IDiscriminatorColumn getDiscriminatorColumn() { + return discriminatorColumn; + } + + /** + * + * + * @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 'Sequence Generator' containment reference. + * + *

    + * If the meaning of the 'Sequence Generator' containment reference isn't clear, + * there really should be more of a description here... + *

    + * + * @return the value of the 'Sequence Generator' 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; + } + + /** + * + * + * @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 Sequence Generator}' containment reference. + * + * + * @param value the new value of the 'Sequence Generator' 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 'Table Generator' containment reference. + * + *

    + * If the meaning of the 'Table Generator' containment reference isn't clear, + * there really should be more of a description here... + *

    + * + * @return the value of the 'Table Generator' 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; + } + + /** + * + * + * @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 Table Generator}' containment reference. + * + * + * @param value the new value of the 'Table Generator' 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 'Default Discriminator Value' attribute. + * + *

    + * If the meaning of the 'Default Discriminator Value' attribute isn't clear, + * there really should be more of a description here... + *

    + * + * @return the value of the 'Default Discriminator Value' 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 Default Discriminator Value}' attribute. + * + * + * @param value the new value of the 'Default Discriminator Value' 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 'Specified Discriminator Value' attribute. + * + *

    + * If the meaning of the 'Specified Discriminator Value' attribute isn't clear, + * there really should be more of a description here... + *

    + * + * @return the value of the 'Specified Discriminator Value' 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 Specified Discriminator Value}' attribute. + * + * + * @param value the new value of the 'Specified Discriminator Value' 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 'Discriminator Value' attribute. + * + *

    + * If the meaning of the 'Discriminator Value' reference isn't clear, + * there really should be more of a description here... + *

    + * + * @return the value of the 'Discriminator Value' 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 getPrimaryKeyJoinColumns() { + return this.getSpecifiedPrimaryKeyJoinColumns().isEmpty() ? this.getDefaultPrimaryKeyJoinColumns() : this.getSpecifiedPrimaryKeyJoinColumns(); + } + + /** + * Returns the value of the 'Specified Primary Key Join Columns' containment reference list. + * The list contents are of type {@link org.eclipse.jpt.core.internal.mappings.IPrimaryKeyJoinColumn}. + * + *

    + * If the meaning of the 'Specified Primary Key Join Columns' containment reference list isn't clear, + * there really should be more of a description here... + *

    + * + * @return the value of the 'Specified Primary Key Join Columns' 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 getSpecifiedPrimaryKeyJoinColumns() { + if (specifiedPrimaryKeyJoinColumns == null) { + specifiedPrimaryKeyJoinColumns = new EObjectContainmentEList(IPrimaryKeyJoinColumn.class, this, OrmPackage.XML_ENTITY_INTERNAL__SPECIFIED_PRIMARY_KEY_JOIN_COLUMNS); + } + return specifiedPrimaryKeyJoinColumns; + } + + /** + * Returns the value of the 'Default Primary Key Join Columns' containment reference list. + * The list contents are of type {@link org.eclipse.jpt.core.internal.mappings.IPrimaryKeyJoinColumn}. + * + *

    + * If the meaning of the 'Default Primary Key Join Columns' containment reference list isn't clear, + * there really should be more of a description here... + *

    + * + * @return the value of the 'Default Primary Key Join Columns' 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 getDefaultPrimaryKeyJoinColumns() { + if (defaultPrimaryKeyJoinColumns == null) { + defaultPrimaryKeyJoinColumns = new EObjectContainmentEList(IPrimaryKeyJoinColumn.class, this, OrmPackage.XML_ENTITY_INTERNAL__DEFAULT_PRIMARY_KEY_JOIN_COLUMNS); + } + return defaultPrimaryKeyJoinColumns; + } + + public EList getAttributeOverrides() { + EList list = new BasicEList(); + list.addAll(getSpecifiedAttributeOverrides()); + list.addAll(getDefaultAttributeOverrides()); + return list; + } + + /** + * Returns the value of the 'Specified Attribute Overrides' containment reference list. + * The list contents are of type {@link org.eclipse.jpt.core.internal.mappings.IAttributeOverride}. + * + *

    + * If the meaning of the 'Specified Attribute Overrides' reference list isn't clear, + * there really should be more of a description here... + *

    + * + * @return the value of the 'Specified Attribute Overrides' 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 getSpecifiedAttributeOverrides() { + if (specifiedAttributeOverrides == null) { + specifiedAttributeOverrides = new EObjectContainmentEList(IAttributeOverride.class, this, OrmPackage.XML_ENTITY_INTERNAL__SPECIFIED_ATTRIBUTE_OVERRIDES); + } + return specifiedAttributeOverrides; + } + + /** + * Returns the value of the 'Default Attribute Overrides' containment reference list. + * The list contents are of type {@link org.eclipse.jpt.core.internal.mappings.IAttributeOverride}. + * + *

    + * If the meaning of the 'Default Attribute Overrides' reference list isn't clear, + * there really should be more of a description here... + *

    + * + * @return the value of the 'Default Attribute Overrides' 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 getDefaultAttributeOverrides() { + if (defaultAttributeOverrides == null) { + defaultAttributeOverrides = new EObjectContainmentEList(IAttributeOverride.class, this, OrmPackage.XML_ENTITY_INTERNAL__DEFAULT_ATTRIBUTE_OVERRIDES); + } + return defaultAttributeOverrides; + } + + public EList getAssociationOverrides() { + EList list = new BasicEList(); + list.addAll(getSpecifiedAssociationOverrides()); + list.addAll(getDefaultAssociationOverrides()); + return list; + } + + /** + * Returns the value of the 'Specified Association Overrides' containment reference list. + * The list contents are of type {@link org.eclipse.jpt.core.internal.mappings.IAssociationOverride}. + * + *

    + * If the meaning of the 'Specified Association Overrides' reference list isn't clear, + * there really should be more of a description here... + *

    + * + * @return the value of the 'Specified Association Overrides' 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 getSpecifiedAssociationOverrides() { + if (specifiedAssociationOverrides == null) { + specifiedAssociationOverrides = new EObjectContainmentEList(IAssociationOverride.class, this, OrmPackage.XML_ENTITY_INTERNAL__SPECIFIED_ASSOCIATION_OVERRIDES); + } + return specifiedAssociationOverrides; + } + + /** + * Returns the value of the 'Default Association Overrides' containment reference list. + * The list contents are of type {@link org.eclipse.jpt.core.internal.mappings.IAssociationOverride}. + * + *

    + * If the meaning of the 'Default Association Overrides' reference list isn't clear, + * there really should be more of a description here... + *

    + * + * @return the value of the 'Default Association Overrides' 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 getDefaultAssociationOverrides() { + if (defaultAssociationOverrides == null) { + defaultAssociationOverrides = new EObjectContainmentEList(IAssociationOverride.class, this, OrmPackage.XML_ENTITY_INTERNAL__DEFAULT_ASSOCIATION_OVERRIDES); + } + return defaultAssociationOverrides; + } + + /** + * Returns the value of the 'Named Queries' containment reference list. + * The list contents are of type {@link org.eclipse.jpt.core.internal.mappings.INamedQuery}. + * + *

    + * If the meaning of the 'Named Queries' containment reference list isn't clear, + * there really should be more of a description here... + *

    + * + * @return the value of the 'Named Queries' 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 getNamedQueries() { + if (namedQueries == null) { + namedQueries = new EObjectContainmentEList(INamedQuery.class, this, OrmPackage.XML_ENTITY_INTERNAL__NAMED_QUERIES); + } + return namedQueries; + } + + /** + * Returns the value of the 'Named Native Queries' containment reference list. + * The list contents are of type {@link org.eclipse.jpt.core.internal.mappings.INamedNativeQuery}. + * + *

    + * If the meaning of the 'Named Native Queries' containment reference list isn't clear, + * there really should be more of a description here... + *

    + * + * @return the value of the 'Named Native Queries' 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 getNamedNativeQueries() { + if (namedNativeQueries == null) { + namedNativeQueries = new EObjectContainmentEList(INamedNativeQuery.class, this, OrmPackage.XML_ENTITY_INTERNAL__NAMED_NATIVE_QUERIES); + } + return namedNativeQueries; + } + + /** + * + * + * @model + * @generated NOT + */ + public boolean discriminatorValueIsAllowed() { + Type type = getPersistentType().findType(); + return (type == null) ? false : type.isAbstract(); + } + + public IEntity parentEntity() { + for (Iterator 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 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 'Table For Xml' reference. + * + *

    + * If the meaning of the 'Table For Xml' reference isn't clear, + * there really should be more of a description here... + *

    + * + * @return the value of the 'Table For Xml' 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 Table For Xml}' reference. + * + * + * @param value the new value of the 'Table For Xml' 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 'Discriminator Column For Xml' reference. + * + *

    + * If the meaning of the 'Discriminator Column For Xml' reference isn't clear, + * there really should be more of a description here... + *

    + * + * @return the value of the 'Discriminator Column For Xml' 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 Discriminator Column For Xml}' reference. + * + * + * @param value the new value of the 'Discriminator Column For Xml' 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(); + } + } + + /** + * + * + * @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; + } + + /** + * + * + * @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); + } + + /** + * + * + * @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) newValue); + return; + case OrmPackage.XML_ENTITY_INTERNAL__DEFAULT_PRIMARY_KEY_JOIN_COLUMNS : + getDefaultPrimaryKeyJoinColumns().clear(); + getDefaultPrimaryKeyJoinColumns().addAll((Collection) 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) newValue); + return; + case OrmPackage.XML_ENTITY_INTERNAL__DEFAULT_ATTRIBUTE_OVERRIDES : + getDefaultAttributeOverrides().clear(); + getDefaultAttributeOverrides().addAll((Collection) newValue); + return; + case OrmPackage.XML_ENTITY_INTERNAL__SPECIFIED_ASSOCIATION_OVERRIDES : + getSpecifiedAssociationOverrides().clear(); + getSpecifiedAssociationOverrides().addAll((Collection) newValue); + return; + case OrmPackage.XML_ENTITY_INTERNAL__DEFAULT_ASSOCIATION_OVERRIDES : + getDefaultAssociationOverrides().clear(); + getDefaultAssociationOverrides().addAll((Collection) newValue); + return; + case OrmPackage.XML_ENTITY_INTERNAL__NAMED_QUERIES : + getNamedQueries().clear(); + getNamedQueries().addAll((Collection) newValue); + return; + case OrmPackage.XML_ENTITY_INTERNAL__NAMED_NATIVE_QUERIES : + getNamedNativeQueries().clear(); + getNamedNativeQueries().addAll((Collection) newValue); + return; + case OrmPackage.XML_ENTITY_INTERNAL__SPECIFIED_SECONDARY_TABLES : + getSpecifiedSecondaryTables().clear(); + getSpecifiedSecondaryTables().addAll((Collection) newValue); + return; + case OrmPackage.XML_ENTITY_INTERNAL__DEFAULT_SECONDARY_TABLES : + getDefaultSecondaryTables().clear(); + getDefaultSecondaryTables().addAll((Collection) newValue); + return; + } + super.eSet(featureID, newValue); + } + + /** + * + * + * @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); + } + + /** + * + * + * @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); + } + + /** + * + * + * @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); + } + + /** + * + * + * @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); + } + + /** + * + * + * @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 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 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 tableNames(Iterator tables) { + return new TransformationIterator(tables) { + @Override + protected Object transform(Object next) { + return ((ITable) next).getName(); + } + }; + } + + public Iterator associatedTableNamesIncludingInherited() { + return this.nonNullTableNames(this.associatedTablesIncludingInherited()); + } + + private Iterator nonNullTableNames(Iterator tables) { + return new FilteringIterator(this.tableNames(tables)) { + @Override + protected boolean accept(Object o) { + return o != null; + } + }; + } + + public Iterator associatedTables() { + return new CompositeIterator(this.getTable(), this.getSecondaryTables().iterator()); + } + + public Iterator 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 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 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 allOverridableAttributeNames() { + return new CompositeIterator(new TransformationIterator(this.inheritanceHierarchy()) { + protected Object transform(Object next) { + return ((ITypeMapping) next).overridableAttributeNames(); + } + }); + } + + public Iterator allOverridableAssociationNames() { + return new CompositeIterator(new TransformationIterator(this.inheritanceHierarchy()) { + protected Object transform(Object next) { + return ((ITypeMapping) next).overridableAssociationNames(); + } + }); + } + + public Iterator overridableAttributeNames() { + return EmptyIterator.instance(); + } + + public Iterator 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 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 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; + +/** + * + * A representation of the model object 'Xml Generated Value'. + * + * + * + * @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() Strategy}' attribute. + * + * + * @see #getStrategy() + * @generated + * @ordered + */ + protected static final GenerationType STRATEGY_EDEFAULT = GenerationType.DEFAULT; + + /** + * The cached value of the '{@link #getStrategy() Strategy}' attribute. + * + * + * @see #getStrategy() + * @generated + * @ordered + */ + protected GenerationType strategy = STRATEGY_EDEFAULT; + + /** + * The default value of the '{@link #getGenerator() Generator}' attribute. + * + * + * @see #getGenerator() + * @generated + * @ordered + */ + protected static final String GENERATOR_EDEFAULT = null; + + /** + * The cached value of the '{@link #getGenerator() Generator}' attribute. + * + * + * @see #getGenerator() + * @generated + * @ordered + */ + protected String generator = GENERATOR_EDEFAULT; + + /** + * + * + * @generated + */ + protected XmlGeneratedValue() { + super(); + } + + /** + * + * + * @generated + */ + @Override + protected EClass eStaticClass() { + return OrmPackage.Literals.XML_GENERATED_VALUE; + } + + /** + * Returns the value of the 'Strategy' attribute. + * The literals are from the enumeration {@link org.eclipse.jpt.core.internal.mappings.GenerationType}. + * + *

    + * If the meaning of the 'Strategy' attribute isn't clear, + * there really should be more of a description here... + *

    + * + * @return the value of the 'Strategy' 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 Strategy}' attribute. + * + * + * @param value the new value of the 'Strategy' 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 'Generator' attribute. + * + *

    + * If the meaning of the 'Generator' attribute isn't clear, + * there really should be more of a description here... + *

    + * + * @return the value of the 'Generator' 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 Generator}' attribute. + * + * + * @param value the new value of the 'Generator' 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)); + } + + /** + * + * + * @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); + } + + /** + * + * + * @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); + } + + /** + * + * + * @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); + } + + /** + * + * + * @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); + } + + /** + * + * + * @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); + } + + /** + * + * + * @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); + } + + /** + * + * + * @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; + +/** + * + * A representation of the model object 'Xml Generator'. + * + * + * + * @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() Name}' attribute. + * + * + * @see #getName() + * @generated + * @ordered + */ + protected static final String NAME_EDEFAULT = null; + + /** + * The cached value of the '{@link #getName() Name}' attribute. + * + * + * @see #getName() + * @generated + * @ordered + */ + protected String name = NAME_EDEFAULT; + + /** + * The default value of the '{@link #getInitialValue() Initial Value}' attribute. + * + * + * @see #getInitialValue() + * @generated + * @ordered + */ + protected static final int INITIAL_VALUE_EDEFAULT = 0; + + /** + * The default value of the '{@link #getSpecifiedInitialValue() Specified Initial Value}' attribute. + * + * + * @see #getSpecifiedInitialValue() + * @generated + * @ordered + */ + protected static final int SPECIFIED_INITIAL_VALUE_EDEFAULT = -1; + + /** + * The cached value of the '{@link #getSpecifiedInitialValue() Specified Initial Value}' attribute. + * + * + * @see #getSpecifiedInitialValue() + * @generated + * @ordered + */ + protected int specifiedInitialValue = SPECIFIED_INITIAL_VALUE_EDEFAULT; + + /** + * The default value of the '{@link #getDefaultInitialValue() Default Initial Value}' attribute. + * + * + * @see #getDefaultInitialValue() + * @generated + * @ordered + */ + protected static final int DEFAULT_INITIAL_VALUE_EDEFAULT = 0; + + /** + * The cached value of the '{@link #getDefaultInitialValue() Default Initial Value}' attribute. + * + * + * @see #getDefaultInitialValue() + * @generated + * @ordered + */ + protected int defaultInitialValue = DEFAULT_INITIAL_VALUE_EDEFAULT; + + /** + * The default value of the '{@link #getAllocationSize() Allocation Size}' attribute. + * + * + * @see #getAllocationSize() + * @generated + * @ordered + */ + protected static final int ALLOCATION_SIZE_EDEFAULT = 0; + + /** + * The default value of the '{@link #getSpecifiedAllocationSize() Specified Allocation Size}' attribute. + * + * + * @see #getSpecifiedAllocationSize() + * @generated + * @ordered + */ + protected static final int SPECIFIED_ALLOCATION_SIZE_EDEFAULT = -1; + + /** + * The cached value of the '{@link #getSpecifiedAllocationSize() Specified Allocation Size}' attribute. + * + * + * @see #getSpecifiedAllocationSize() + * @generated + * @ordered + */ + protected int specifiedAllocationSize = SPECIFIED_ALLOCATION_SIZE_EDEFAULT; + + /** + * The default value of the '{@link #getDefaultAllocationSize() Default Allocation Size}' attribute. + * + * + * @see #getDefaultAllocationSize() + * @generated + * @ordered + */ + protected static final int DEFAULT_ALLOCATION_SIZE_EDEFAULT = 0; + + /** + * The cached value of the '{@link #getDefaultAllocationSize() Default Allocation Size}' attribute. + * + * + * @see #getDefaultAllocationSize() + * @generated + * @ordered + */ + protected int defaultAllocationSize = DEFAULT_ALLOCATION_SIZE_EDEFAULT; + + /** + * + * + * @generated + */ + protected XmlGenerator() { + super(); + } + + /** + * + * + * @generated + */ + @Override + protected EClass eStaticClass() { + return OrmPackage.Literals.XML_GENERATOR; + } + + /** + * Returns the value of the 'Name' attribute. + * + *

    + * If the meaning of the 'Name' attribute isn't clear, + * there really should be more of a description here... + *

    + * + * @return the value of the 'Name' 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 Name}' attribute. + * + * + * @param value the new value of the 'Name' 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 'Specified Initial Value' attribute. + * The default value is "-1". + * + *

    + * If the meaning of the 'Specified Initial Value' attribute isn't clear, + * there really should be more of a description here... + *

    + * + * @return the value of the 'Specified Initial Value' 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 Specified Initial Value}' attribute. + * + * + * @param value the new value of the 'Specified Initial Value' 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 'Default Initial Value' attribute. + * + *

    + * If the meaning of the 'Default Initial Value' attribute isn't clear, + * there really should be more of a description here... + *

    + * + * @return the value of the 'Default Initial Value' 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 'Specified Allocation Size' attribute. + * The default value is "-1". + * + *

    + * If the meaning of the 'Specified Allocation Size' attribute isn't clear, + * there really should be more of a description here... + *

    + * + * @return the value of the 'Specified Allocation Size' 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 Specified Allocation Size}' attribute. + * + * + * @param value the new value of the 'Specified Allocation Size' 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 'Default Allocation Size' attribute. + * + *

    + * If the meaning of the 'Default Allocation Size' attribute isn't clear, + * there really should be more of a description here... + *

    + * + * @return the value of the 'Default Allocation Size' attribute. + * @see org.eclipse.jpt.core.internal.content.orm.OrmPackage#getIGenerator_DefaultAllocationSize() + * @model changeable="false" + * @generated + */ + public int getDefaultAllocationSize() { + return defaultAllocationSize; + } + + /** + * + * + * @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); + } + + /** + * + * + * @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); + } + + /** + * + * + * @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); + } + + /** + * + * + * @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); + } + + /** + * + * + * @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); + } + + /** + * + * + * @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); + } + + /** + * + * + * @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; + +/** + * + * A representation of the model object 'Xml Id'. + * + * + * + * @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() Column}' containment reference. + * + * + * @see #getColumn() + * @generated + * @ordered + */ + protected IColumn column; + + /** + * The cached value of the '{@link #getGeneratedValue() Generated Value}' containment reference. + * + * + * @see #getGeneratedValue() + * @generated + * @ordered + */ + protected IGeneratedValue generatedValue; + + /** + * The default value of the '{@link #getTemporal() Temporal}' attribute. + * + * + * @see #getTemporal() + * @generated + * @ordered + */ + protected static final TemporalType TEMPORAL_EDEFAULT = TemporalType.NULL; + + /** + * The cached value of the '{@link #getTemporal() Temporal}' attribute. + * + * + * @see #getTemporal() + * @generated + * @ordered + */ + protected TemporalType temporal = TEMPORAL_EDEFAULT; + + /** + * The cached value of the '{@link #getTableGenerator() Table Generator}' containment reference. + * + * + * @see #getTableGenerator() + * @generated + * @ordered + */ + protected ITableGenerator tableGenerator; + + /** + * The cached value of the '{@link #getSequenceGenerator() Sequence Generator}' containment reference. + * + * + * @see #getSequenceGenerator() + * @generated + * @ordered + */ + protected ISequenceGenerator sequenceGenerator; + + /** + * + * + * @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); + } + + /** + * + * + * @generated + */ + @Override + protected EClass eStaticClass() { + return OrmPackage.Literals.XML_ID; + } + + /** + * Returns the value of the 'Column' containment reference. + * + *

    + * If the meaning of the 'Column' containment reference isn't clear, + * there really should be more of a description here... + *

    + * + * @return the value of the 'Column' 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; + } + + /** + * + * + * @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 'Generated Value' containment reference. + * + *

    + * If the meaning of the 'Generated Value' reference isn't clear, + * there really should be more of a description here... + *

    + * + * @return the value of the 'Generated Value' 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; + } + + /** + * + * + * @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 Generated Value}' containment reference. + * + * + * @param value the new value of the 'Generated Value' 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 'Temporal' attribute. + * The literals are from the enumeration {@link org.eclipse.jpt.core.internal.mappings.TemporalType}. + * + *

    + * If the meaning of the 'Temporal' attribute isn't clear, + * there really should be more of a description here... + *

    + * + * @return the value of the 'Temporal' 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 Temporal}' attribute. + * + * + * @param value the new value of the 'Temporal' 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 'Table Generator' containment reference. + * + *

    + * If the meaning of the 'Table Generator' reference isn't clear, + * there really should be more of a description here... + *

    + * + * @return the value of the 'Table Generator' 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; + } + + /** + * + * + * @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 Table Generator}' containment reference. + * + * + * @param value the new value of the 'Table Generator' 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 'Sequence Generator' containment reference. + * + *

    + * If the meaning of the 'Sequence Generator' reference isn't clear, + * there really should be more of a description here... + *

    + * + * @return the value of the 'Sequence Generator' 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; + } + + /** + * + * + * @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 Sequence Generator}' containment reference. + * + * + * @param value the new value of the 'Sequence Generator' 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 'Column For Xml' reference. + * + *

    + * If the meaning of the 'Column For Xml' reference isn't clear, + * there really should be more of a description here... + *

    + * + * @return the value of the 'Column For Xml' 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 Column For Xml}' reference. + * + * + * @param value the new value of the 'Column For Xml' 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); + } + + /** + * + * + * @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); + } + + /** + * + * + * @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); + } + + /** + * + * + * @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); + } + + /** + * + * + * @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); + } + + /** + * + * + * @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); + } + + /** + * + * + * @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); + } + + /** + * + * + * @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); + } + + /** + * + * + * @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; + +/** + * + * A representation of the model object 'Xml Join Column'. + * + * + *

    + * The following features are supported: + *

      + *
    • {@link org.eclipse.jpt.core.internal.content.orm.XmlJoinColumn#getSpecifiedReferencedColumnNameForXml Specified Referenced Column Name For Xml}
    • + *
    + *

    + * + * @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() Referenced Column Name}' attribute. + * + * + * @see #getReferencedColumnName() + * @generated + * @ordered + */ + protected static final String REFERENCED_COLUMN_NAME_EDEFAULT = null; + + /** + * The default value of the '{@link #getSpecifiedReferencedColumnName() Specified Referenced Column Name}' attribute. + * + * + * @see #getSpecifiedReferencedColumnName() + * @generated + * @ordered + */ + protected static final String SPECIFIED_REFERENCED_COLUMN_NAME_EDEFAULT = null; + + /** + * The cached value of the '{@link #getSpecifiedReferencedColumnName() Specified Referenced Column Name}' attribute. + * + * + * @see #getSpecifiedReferencedColumnName() + * @generated + * @ordered + */ + protected String specifiedReferencedColumnName = SPECIFIED_REFERENCED_COLUMN_NAME_EDEFAULT; + + /** + * The default value of the '{@link #getDefaultReferencedColumnName() Default Referenced Column Name}' attribute. + * + * + * @see #getDefaultReferencedColumnName() + * @generated + * @ordered + */ + protected static final String DEFAULT_REFERENCED_COLUMN_NAME_EDEFAULT = null; + + /** + * The cached value of the '{@link #getDefaultReferencedColumnName() Default Referenced Column Name}' attribute. + * + * + * @see #getDefaultReferencedColumnName() + * @generated + * @ordered + */ + protected String defaultReferencedColumnName = DEFAULT_REFERENCED_COLUMN_NAME_EDEFAULT; + + /** + * The default value of the '{@link #getSpecifiedReferencedColumnNameForXml() Specified Referenced Column Name For Xml}' attribute. + * + * + * @see #getSpecifiedReferencedColumnNameForXml() + * @generated + * @ordered + */ + protected static final String SPECIFIED_REFERENCED_COLUMN_NAME_FOR_XML_EDEFAULT = null; + + /** + * + * + * @generated NOT + */ + protected XmlJoinColumn() { + throw new UnsupportedOperationException(); + } + + protected XmlJoinColumn(IJoinColumn.Owner owner) { + super(owner); + } + + /** + * + * + * @generated + */ + @Override + protected EClass eStaticClass() { + return OrmPackage.Literals.XML_JOIN_COLUMN; + } + + /** + * Returns the value of the 'Referenced Column Name' attribute. + * + *

    + * If the meaning of the 'Referenced Column Name' attribute isn't clear, + * there really should be more of a description here... + *

    + * + * @return the value of the 'Referenced Column Name' 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 'Specified Referenced Column Name' attribute. + * + *

    + * If the meaning of the 'Specified Referenced Column Name' attribute isn't clear, + * there really should be more of a description here... + *

    + * + * @return the value of the 'Specified Referenced Column Name' 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 Specified Referenced Column Name}' attribute. + * + * + * @param value the new value of the 'Specified Referenced Column Name' 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 'Default Referenced Column Name' attribute. + * + *

    + * If the meaning of the 'Default Referenced Column Name' attribute isn't clear, + * there really should be more of a description here... + *

    + * + * @return the value of the 'Default Referenced Column Name' 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 'Specified Referenced Column Name For Xml' attribute. + * + *

    + * If the meaning of the 'Specified Referenced Column Name For Xml' attribute isn't clear, + * there really should be more of a description here... + *

    + * + * @return the value of the 'Specified Referenced Column Name For Xml' 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 Specified Referenced Column Name For Xml}' attribute. + * + * + * @param value the new value of the 'Specified Referenced Column Name For Xml' 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)); + } + + /** + * + * + * @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); + } + + /** + * + * + * @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); + } + + /** + * + * + * @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); + } + + /** + * + * + * @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); + } + + /** + * + * + * @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); + } + + /** + * + * + * @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); + } + + /** + * + * + * @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; + +/** + * + * A representation of the model object 'Xml Join Table'. + * + * + * + * @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() Specified Join Columns}' containment reference list. + * + * + * @see #getSpecifiedJoinColumns() + * @generated + * @ordered + */ + protected EList specifiedJoinColumns; + + /** + * The cached value of the '{@link #getDefaultJoinColumns() Default Join Columns}' containment reference list. + * + * + * @see #getDefaultJoinColumns() + * @generated + * @ordered + */ + protected EList defaultJoinColumns; + + /** + * The cached value of the '{@link #getSpecifiedInverseJoinColumns() Specified Inverse Join Columns}' containment reference list. + * + * + * @see #getSpecifiedInverseJoinColumns() + * @generated + * @ordered + */ + protected EList specifiedInverseJoinColumns; + + /** + * The cached value of the '{@link #getDefaultInverseJoinColumns() Default Inverse Join Columns}' containment reference list. + * + * + * @see #getDefaultInverseJoinColumns() + * @generated + * @ordered + */ + protected EList defaultInverseJoinColumns; + + /** + * + * + * @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 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"); + } + + /** + * + * + * @generated + */ + @Override + protected EClass eStaticClass() { + return OrmPackage.Literals.XML_JOIN_TABLE; + } + + /** + * Returns the value of the 'Join Columns' containment reference list. + * The list contents are of type {@link org.eclipse.jpt.core.internal.mappings.IJoinColumn}. + * + *

    + * If the meaning of the 'Join Columns' containment reference list isn't clear, + * there really should be more of a description here... + *

    + * + * @return the value of the 'Join Columns' 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 getJoinColumns() { + return this.getSpecifiedJoinColumns().isEmpty() ? this.getDefaultJoinColumns() : this.getSpecifiedJoinColumns(); + } + + /** + * Returns the value of the 'Specified Join Columns' containment reference list. + * The list contents are of type {@link org.eclipse.jpt.core.internal.mappings.IJoinColumn}. + * + *

    + * If the meaning of the 'Specified Join Columns' containment reference list isn't clear, + * there really should be more of a description here... + *

    + * + * @return the value of the 'Specified Join Columns' 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 getSpecifiedJoinColumns() { + if (specifiedJoinColumns == null) { + specifiedJoinColumns = new EObjectContainmentEList(IJoinColumn.class, this, OrmPackage.XML_JOIN_TABLE__SPECIFIED_JOIN_COLUMNS); + } + return specifiedJoinColumns; + } + + /** + * Returns the value of the 'Default Join Columns' containment reference list. + * The list contents are of type {@link org.eclipse.jpt.core.internal.mappings.IJoinColumn}. + * + *

    + * If the meaning of the 'Default Join Columns' containment reference list isn't clear, + * there really should be more of a description here... + *

    + * + * @return the value of the 'Default Join Columns' 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 getDefaultJoinColumns() { + if (defaultJoinColumns == null) { + defaultJoinColumns = new EObjectContainmentEList(IJoinColumn.class, this, OrmPackage.XML_JOIN_TABLE__DEFAULT_JOIN_COLUMNS); + } + return defaultJoinColumns; + } + + /** + * Returns the value of the 'Inverse Join Columns' containment reference list. + * The list contents are of type {@link org.eclipse.jpt.core.internal.mappings.IJoinColumn}. + * + *

    + * If the meaning of the 'Inverse Join Columns' containment reference list isn't clear, + * there really should be more of a description here... + *

    + * + * @return the value of the 'Inverse Join Columns' 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 getInverseJoinColumns() { + return this.getSpecifiedInverseJoinColumns().isEmpty() ? this.getDefaultInverseJoinColumns() : this.getSpecifiedInverseJoinColumns(); + } + + /** + * Returns the value of the 'Specified Inverse Join Columns' containment reference list. + * The list contents are of type {@link org.eclipse.jpt.core.internal.mappings.IJoinColumn}. + * + *

    + * If the meaning of the 'Specified Inverse Join Columns' containment reference list isn't clear, + * there really should be more of a description here... + *

    + * + * @return the value of the 'Specified Inverse Join Columns' 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 getSpecifiedInverseJoinColumns() { + if (specifiedInverseJoinColumns == null) { + specifiedInverseJoinColumns = new EObjectContainmentEList(IJoinColumn.class, this, OrmPackage.XML_JOIN_TABLE__SPECIFIED_INVERSE_JOIN_COLUMNS); + } + return specifiedInverseJoinColumns; + } + + /** + * Returns the value of the 'Default Inverse Join Columns' containment reference list. + * The list contents are of type {@link org.eclipse.jpt.core.internal.mappings.IJoinColumn}. + * + *

    + * If the meaning of the 'Default Inverse Join Columns' containment reference list isn't clear, + * there really should be more of a description here... + *

    + * + * @return the value of the 'Default Inverse Join Columns' 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 getDefaultInverseJoinColumns() { + if (defaultInverseJoinColumns == null) { + defaultInverseJoinColumns = new EObjectContainmentEList(IJoinColumn.class, this, OrmPackage.XML_JOIN_TABLE__DEFAULT_INVERSE_JOIN_COLUMNS); + } + return defaultInverseJoinColumns; + } + + /** + * + * + * @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); + } + + /** + * + * + * @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); + } + + /** + * + * + * @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) newValue); + return; + case OrmPackage.XML_JOIN_TABLE__DEFAULT_JOIN_COLUMNS : + getDefaultJoinColumns().clear(); + getDefaultJoinColumns().addAll((Collection) newValue); + return; + case OrmPackage.XML_JOIN_TABLE__SPECIFIED_INVERSE_JOIN_COLUMNS : + getSpecifiedInverseJoinColumns().clear(); + getSpecifiedInverseJoinColumns().addAll((Collection) newValue); + return; + case OrmPackage.XML_JOIN_TABLE__DEFAULT_INVERSE_JOIN_COLUMNS : + getDefaultInverseJoinColumns().clear(); + getDefaultInverseJoinColumns().addAll((Collection) newValue); + return; + } + super.eSet(featureID, newValue); + } + + /** + * + * + * @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); + } + + /** + * + * + * @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); + } + + /** + * + * + * @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); + } + + /** + * + * + * @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; + +/** + * + * A representation of the model object 'Xml Many To Many'. + * + * + * + * @see org.eclipse.jpt.core.internal.content.orm.OrmPackage#getXmlManyToMany() + * @model kind="class" + * @generated + */ +public class XmlManyToMany extends XmlMultiRelationshipMappingInternal + implements IManyToMany +{ + /** + * + * + * @generated + */ + protected XmlManyToMany() { + super(); + } + + /** + * + * + * @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; + +/** + * + * A representation of the model object 'Xml Many To One'. + * + * + * + * @see org.eclipse.jpt.core.internal.content.orm.OrmPackage#getXmlManyToOne() + * @model kind="class" + * @generated + */ +public class XmlManyToOne extends XmlSingleRelationshipMapping + implements IManyToOne +{ + /** + * + * + * @generated + */ + protected XmlManyToOne() { + super(); + } + + /** + * + * + * @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; + +/** + * + * An implementation of the model object 'Xml Mapped Superclass'. + * + * + * + * @see org.eclipse.jpt.core.internal.content.orm.OrmPackage#getXmlMappedSuperclass() + * @model kind="class" + * @generated + */ +public class XmlMappedSuperclass extends XmlTypeMapping + implements IMappedSuperclass +{ + /** + * + * + * @generated + */ + protected XmlMappedSuperclass() { + super(); + } + + /** + * + * + * @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 associatedTableNamesIncludingInherited() { + return EmptyIterator.instance(); + } + + public Iterator associatedTables() { + return EmptyIterator.instance(); + } + + public Iterator associatedTablesIncludingInherited() { + return EmptyIterator.instance(); + } + + public Iterator overridableAttributeNames() { + return new TransformationIterator(new FilteringIterator(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 overridableAssociationNames() { + return new TransformationIterator(new FilteringIterator(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; + +/** + * + * A representation of the model object 'Xml Multi Relationship Mapping'. + * + * + * + * @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; + +/** + * + * A representation of the model object 'Xml Multi Relationship Mapping For Xml'. + * + * + *

    + * The following features are supported: + *

      + *
    • {@link org.eclipse.jpt.core.internal.content.orm.XmlMultiRelationshipMappingForXml#getJoinTableForXml Join Table For Xml}
    • + *
    • {@link org.eclipse.jpt.core.internal.content.orm.XmlMultiRelationshipMappingForXml#getOrderByForXml Order By For Xml}
    • + *
    + *

    + * + * @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 'Join Table For Xml' reference. + * + *

    + * If the meaning of the 'Join Table For Xml' reference isn't clear, + * there really should be more of a description here... + *

    + * + * @return the value of the 'Join Table For Xml' 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 Join Table For Xml}' reference. + * + * + * @param value the new value of the 'Join Table For Xml' reference. + * @see #getJoinTableForXml() + * @generated + */ + void setJoinTableForXml(XmlJoinTable value); + + /** + * Returns the value of the 'Order By For Xml' reference. + * + *

    + * If the meaning of the 'Order By For Xml' reference isn't clear, + * there really should be more of a description here... + *

    + * + * @return the value of the 'Order By For Xml' 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 Order By For Xml}' reference. + * + * + * @param value the new value of the 'Order By For Xml' 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; + +/** + * + * A representation of the model object 'Xml Multi Relationship Mapping'. + * + * + * + * @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() Mapped By}' attribute. + * + * + * @see #getMappedBy() + * @generated + * @ordered + */ + protected static final String MAPPED_BY_EDEFAULT = null; + + /** + * The cached value of the '{@link #getMappedBy() Mapped By}' attribute. + * + * + * @see #getMappedBy() + * @generated + * @ordered + */ + protected String mappedBy = MAPPED_BY_EDEFAULT; + + /** + * The default value of the '{@link #getFetch() Fetch}' attribute. + * + * + * @see #getFetch() + * @generated + * @ordered + */ + protected static final DefaultLazyFetchType FETCH_EDEFAULT = DefaultLazyFetchType.DEFAULT; + + /** + * The cached value of the '{@link #getFetch() Fetch}' attribute. + * + * + * @see #getFetch() + * @generated + * @ordered + */ + protected DefaultLazyFetchType fetch = FETCH_EDEFAULT; + + /** + * The cached value of the '{@link #getJoinTable() Join Table}' containment reference. + * + * + * @see #getJoinTable() + * @generated + * @ordered + */ + protected IJoinTable joinTable; + + /** + * The cached value of the '{@link #getOrderBy() Order By}' containment reference. + * + * + * @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(); + } + }; + } + + /** + * + * + * @generated + */ + @Override + protected EClass eStaticClass() { + return OrmPackage.Literals.XML_MULTI_RELATIONSHIP_MAPPING_INTERNAL; + } + + /** + * Returns the value of the 'Mapped By' attribute. + * + *

    + * If the meaning of the 'Mapped By' attribute isn't clear, + * there really should be more of a description here... + *

    + * + * @return the value of the 'Mapped By' 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 Mapped By}' attribute. + * + * + * @param value the new value of the 'Mapped By' 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 'Fetch' attribute. + * The literals are from the enumeration {@link org.eclipse.jpt.core.internal.mappings.DefaultLazyFetchType}. + * + *

    + * If the meaning of the 'Fetch' attribute isn't clear, + * there really should be more of a description here... + *

    + * + * @return the value of the 'Fetch' 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 Fetch}' attribute. + * + * + * @param value the new value of the 'Fetch' 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 'Join Table' containment reference. + * + *

    + * If the meaning of the 'Join Table' containment reference isn't clear, + * there really should be more of a description here... + *

    + * + * @return the value of the 'Join Table' 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; + } + + /** + * + * + * @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 'Order By' containment reference. + * + *

    + * If the meaning of the 'Order By' reference isn't clear, + * there really should be more of a description here... + *

    + * + * @return the value of the 'Order By' 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; + } + + /** + * + * + * @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)); + } + + /** + * + * + * @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); + } + + /** + * + * + * @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); + } + + /** + * + * + * @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); + } + + /** + * + * + * @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); + } + + /** + * + * + * @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); + } + + /** + * + * + * @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); + } + + /** + * + * + * @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); + } + + /** + * + * + * @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; + +/** + * + * A representation of the model object 'Xml Named Native Query'. + * + * + * + * @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() Result Class}' attribute. + * + * + * @see #getResultClass() + * @generated + * @ordered + */ + protected static final String RESULT_CLASS_EDEFAULT = null; + + /** + * The cached value of the '{@link #getResultClass() Result Class}' attribute. + * + * + * @see #getResultClass() + * @generated + * @ordered + */ + protected String resultClass = RESULT_CLASS_EDEFAULT; + + /** + * The default value of the '{@link #getResultSetMapping() Result Set Mapping}' attribute. + * + * + * @see #getResultSetMapping() + * @generated + * @ordered + */ + protected static final String RESULT_SET_MAPPING_EDEFAULT = null; + + /** + * The cached value of the '{@link #getResultSetMapping() Result Set Mapping}' attribute. + * + * + * @see #getResultSetMapping() + * @generated + * @ordered + */ + protected String resultSetMapping = RESULT_SET_MAPPING_EDEFAULT; + + /** + * + * + * @generated + */ + protected XmlNamedNativeQuery() { + super(); + } + + /** + * + * + * @generated + */ + @Override + protected EClass eStaticClass() { + return OrmPackage.Literals.XML_NAMED_NATIVE_QUERY; + } + + /** + * Returns the value of the 'Result Class' attribute. + * + *

    + * If the meaning of the 'Result Class' attribute isn't clear, + * there really should be more of a description here... + *

    + * + * @return the value of the 'Result Class' 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 Result Class}' attribute. + * + * + * @param value the new value of the 'Result Class' 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 'Result Set Mapping' attribute. + * + *

    + * If the meaning of the 'Result Set Mapping' attribute isn't clear, + * there really should be more of a description here... + *

    + * + * @return the value of the 'Result Set Mapping' 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 Result Set Mapping}' attribute. + * + * + * @param value the new value of the 'Result Set Mapping' 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)); + } + + /** + * + * + * @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); + } + + /** + * + * + * @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); + } + + /** + * + * + * @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); + } + + /** + * + * + * @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); + } + + /** + * + * + * @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); + } + + /** + * + * + * @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); + } + + /** + * + * + * @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; + +/** + * + * A representation of the model object 'Xml Named Query'. + * + * + * + * @see org.eclipse.jpt.core.internal.content.orm.OrmPackage#getXmlNamedQuery() + * @model kind="class" + * @generated + */ +public class XmlNamedQuery extends AbstractXmlQuery implements INamedQuery +{ + /** + * + * + * @generated + */ + protected XmlNamedQuery() { + super(); + } + + /** + * + * + * @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; + +/** + * + * A representation of the model object 'Xml Null Attribute Mapping'. + * + * + * + * @see org.eclipse.jpt.core.internal.content.orm.OrmPackage#getXmlNullAttributeMapping() + * @model kind="class" + * @generated + */ +public class XmlNullAttributeMapping extends XmlAttributeMapping +{ + /** + * + * + * @generated + */ + protected XmlNullAttributeMapping() { + super(); + } + + /** + * + * + * @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; + +/** + * + * A representation of the model object 'Xml One To Many'. + * + * + * + * @see org.eclipse.jpt.core.internal.content.orm.OrmPackage#getXmlOneToMany() + * @model kind="class" + * @generated + */ +public class XmlOneToMany extends XmlMultiRelationshipMappingInternal + implements IOneToMany +{ + /** + * + * + * @generated + */ + protected XmlOneToMany() { + super(); + } + + /** + * + * + * @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; + +/** + * + * A representation of the model object 'Xml One To One'. + * + * + * + * @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() Mapped By}' attribute. + * + * + * @see #getMappedBy() + * @generated + * @ordered + */ + protected static final String MAPPED_BY_EDEFAULT = null; + + /** + * The cached value of the '{@link #getMappedBy() Mapped By}' attribute. + * + * + * @see #getMappedBy() + * @generated + * @ordered + */ + protected String mappedBy = MAPPED_BY_EDEFAULT; + + /** + * + * + * @generated + */ + protected XmlOneToOne() { + super(); + } + + @Override + protected void initializeOn(XmlAttributeMapping newMapping) { + newMapping.initializeFromXmlOneToOneMapping(this); + } + + /** + * + * + * @generated + */ + @Override + protected EClass eStaticClass() { + return OrmPackage.Literals.XML_ONE_TO_ONE; + } + + /** + * Returns the value of the 'Mapped By' attribute. + * + *

    + * If the meaning of the 'Mapped By' attribute isn't clear, + * there really should be more of a description here... + *

    + * + * @return the value of the 'Mapped By' 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 Mapped By}' attribute. + * + * + * @param value the new value of the 'Mapped By' 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)); + } + + /** + * + * + * @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); + } + + /** + * + * + * @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); + } + + /** + * + * + * @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); + } + + /** + * + * + * @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); + } + + /** + * + * + * @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); + } + + /** + * + * + * @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); + } + + /** + * + * + * @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; + +/** + * + * A representation of the model object 'Xml Order By'. + * + * + * + * @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() Value}' attribute. + * + * + * @see #getValue() + * @generated + * @ordered + */ + protected static final String VALUE_EDEFAULT = null; + + /** + * The cached value of the '{@link #getValue() Value}' attribute. + * + * + * @see #getValue() + * @generated + * @ordered + */ + protected String value = VALUE_EDEFAULT; + + /** + * The default value of the '{@link #getType() Type}' attribute. + * + * + * @see #getType() + * @generated + * @ordered + */ + protected static final OrderingType TYPE_EDEFAULT = OrderingType.NONE; + + /** + * The cached value of the '{@link #getType() Type}' attribute. + * + * + * @see #getType() + * @generated + * @ordered + */ + protected OrderingType type = TYPE_EDEFAULT; + + /** + * + * + * @generated + */ + protected XmlOrderBy() { + super(); + } + + /** + * + * + * @generated + */ + @Override + protected EClass eStaticClass() { + return OrmPackage.Literals.XML_ORDER_BY; + } + + /** + * Returns the value of the 'Value' attribute. + * + *

    + * If the meaning of the 'Value' attribute isn't clear, + * there really should be more of a description here... + *

    + * + * @return the value of the 'Value' 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 Value}' attribute. + * + * + * @param value the new value of the 'Value' 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 'Type' attribute. + * The literals are from the enumeration {@link org.eclipse.jpt.core.internal.mappings.OrderingType}. + * + *

    + * If the meaning of the 'Type' attribute isn't clear, + * there really should be more of a description here... + *

    + * + * @return the value of the 'Type' 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 Type}' attribute. + * + * + * @param value the new value of the 'Type' 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(); + } + + /** + * + * + * @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); + } + + /** + * + * + * @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); + } + + /** + * + * + * @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); + } + + /** + * + * + * @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); + } + + /** + * + * + * @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); + } + + /** + * + * + * @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); + } + + /** + * + * + * @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; + +/** + * + * A representation of the model object 'Xml Override'. + * + * + * + * @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() Name}' attribute. + * + * + * @see #getName() + * @generated + * @ordered + */ + protected static final String NAME_EDEFAULT = null; + + /** + * The cached value of the '{@link #getName() Name}' attribute. + * + * + * @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; + } + + /** + * + * + * @generated + */ + @Override + protected EClass eStaticClass() { + return OrmPackage.Literals.XML_OVERRIDE; + } + + /** + * Returns the value of the 'Name' attribute. + * + *

    + * If the meaning of the 'Name' attribute isn't clear, + * there really should be more of a description here... + *

    + * + * @return the value of the 'Name' 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 Name}' attribute. + * + * + * @param value the new value of the 'Name' 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)); + } + + /** + * + * + * @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); + } + + /** + * + * + * @generated + */ + @Override + public void eSet(int featureID, Object newValue) { + switch (featureID) { + case OrmPackage.XML_OVERRIDE__NAME : + setName((String) newValue); + return; + } + super.eSet(featureID, newValue); + } + + /** + * + * + * @generated + */ + @Override + public void eUnset(int featureID) { + switch (featureID) { + case OrmPackage.XML_OVERRIDE__NAME : + setName(NAME_EDEFAULT); + return; + } + super.eUnset(featureID); + } + + /** + * + * + * @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); + } + + /** + * + * + * @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); + } + + /** + * + * + * @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); + } + + /** + * + * + * @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; + +/** + * + * A representation of the model object 'Xml Persistent Attribute'. + * + * + *

    + * The following features are supported: + *

      + *
    • {@link org.eclipse.jpt.core.internal.content.orm.XmlPersistentAttribute#getName Name}
    • + *
    + *

    + * + * @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() Mapping Key}' attribute. + * + * + * @see #getMappingKey() + * @generated + * @ordered + */ + protected static final String MAPPING_KEY_EDEFAULT = null; + + /** + * The cached value of the '{@link #getMappingKey() Mapping Key}' attribute. + * + * + * @see #getMappingKey() + * @generated + * @ordered + */ + protected String mappingKey = MAPPING_KEY_EDEFAULT; + + /** + * The default value of the '{@link #getName() Name}' attribute. + * + * + * @see #getName() + * @generated + * @ordered + */ + protected static final String NAME_EDEFAULT = null; + + /** + * The cached value of the '{@link #getName() Name}' attribute. + * + * + * @see #getName() + * @generated + * @ordered + */ + protected String name = NAME_EDEFAULT; + + private Collection attributeMappingProviders; + + /** + * + * + * @generated NOT + */ + protected XmlPersistentAttribute() { + super(); + this.attributeMappingProviders = buildAttributeMappingProviders(); + } + + protected Collection buildAttributeMappingProviders() { + Collection collection = new ArrayList(); + 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; + } + + /** + * + * + * @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 'Mapping Key' attribute. + * + *

    + * If the meaning of the 'Mapping Key' attribute isn't clear, + * there really should be more of a description here... + *

    + * + * @return the value of the 'Mapping Key' 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 'Name' attribute. + * + *

    + * If the meaning of the 'Name' attribute isn't clear, + * there really should be more of a description here... + *

    + * + * @return the value of the 'Name' 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 Name}' attribute. + * + * + * @param value the new value of the 'Name' 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 attributeMappingProviders() { + return this.attributeMappingProviders; + } + + public XmlAttributeMapping getMapping() { + return (XmlAttributeMapping) eContainer(); + } + + public XmlPersistentType persistentType() { + return getMapping().getPersistentType(); + } + + /** + * + * + * @model kind="operation" required="true" + * @generated NOT + */ + public ITypeMapping typeMapping() { + return persistentType().getMapping(); + } + + public boolean isVirtual() { + return persistentType().getVirtualPersistentAttributes().contains(this); + } + + /** + * + * + * @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); + } + + /** + * + * + * @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); + } + + /** + * + * + * @generated + */ + @Override + public void eUnset(int featureID) { + switch (featureID) { + case OrmPackage.XML_PERSISTENT_ATTRIBUTE__NAME : + setName(NAME_EDEFAULT); + return; + } + super.eUnset(featureID); + } + + /** + * + * + * @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); + } + + /** + * + * + * @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); + } + + /** + * + * + * @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); + } + + /** + * + * + * @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 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; + +/** + * + * A representation of the model object 'Xml Persistent Type'. + * + * + *

    + * The following features are supported: + *

      + *
    • {@link org.eclipse.jpt.core.internal.content.orm.XmlPersistentType#getClass_ Class}
    • + *
    • {@link org.eclipse.jpt.core.internal.content.orm.XmlPersistentType#getAttributeMappings Attribute Mappings}
    • + *
    • {@link org.eclipse.jpt.core.internal.content.orm.XmlPersistentType#getSpecifiedAttributeMappings Specified Attribute Mappings}
    • + *
    • {@link org.eclipse.jpt.core.internal.content.orm.XmlPersistentType#getVirtualAttributeMappings Virtual Attribute Mappings}
    • + *
    • {@link org.eclipse.jpt.core.internal.content.orm.XmlPersistentType#getPersistentAttributes Persistent Attributes}
    • + *
    • {@link org.eclipse.jpt.core.internal.content.orm.XmlPersistentType#getSpecifiedPersistentAttributes Specified Persistent Attributes}
    • + *
    • {@link org.eclipse.jpt.core.internal.content.orm.XmlPersistentType#getVirtualPersistentAttributes Virtual Persistent Attributes}
    • + *
    + *

    + * + * @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() Mapping Key}' attribute. + * + * + * @see #getMappingKey() + * @generated + * @ordered + */ + protected static final String MAPPING_KEY_EDEFAULT = null; + + /** + * The cached value of the '{@link #getMappingKey() Mapping Key}' attribute. + * + * + * @see #getMappingKey() + * @generated + * @ordered + */ + protected String mappingKey = MAPPING_KEY_EDEFAULT; + + /** + * The default value of the '{@link #getClass_() Class}' attribute. + * + * + * @see #getClass_() + * @generated + * @ordered + */ + protected static final String CLASS_EDEFAULT = null; + + /** + * The cached value of the '{@link #getClass_() Class}' attribute. + * + * + * @see #getClass_() + * @generated + * @ordered + */ + protected String class_ = CLASS_EDEFAULT; + + /** + * The cached value of the '{@link #getSpecifiedAttributeMappings() Specified Attribute Mappings}' containment reference list. + * + * + * @see #getSpecifiedAttributeMappings() + * @generated + * @ordered + */ + protected EList specifiedAttributeMappings; + + /** + * The cached value of the '{@link #getVirtualAttributeMappings() Virtual Attribute Mappings}' containment reference list. + * + * + * @see #getVirtualAttributeMappings() + * @generated + * @ordered + */ + protected EList virtualAttributeMappings; + + /** + * The cached value of the '{@link #getSpecifiedPersistentAttributes() Specified Persistent Attributes}' reference list. + * + * + * @see #getSpecifiedPersistentAttributes() + * @generated + * @ordered + */ + protected EList specifiedPersistentAttributes; + + /** + * The cached value of the '{@link #getVirtualPersistentAttributes() Virtual Persistent Attributes}' reference list. + * + * + * @see #getVirtualPersistentAttributes() + * @generated + * @ordered + */ + protected EList virtualPersistentAttributes; + + private JavaPersistentType javaPersistentType; + + private Collection typeMappingProviders; + + private IPersistentType parentPersistentType; + + /** + * + * + * @generated NOT + */ + protected XmlPersistentType() { + super(); + this.typeMappingProviders = buildTypeMappingProviders(); + } + + protected XmlPersistentType(String theMappingKey) { + this(); + mappingKey = theMappingKey; + } + + @Override + protected void addInsignificantFeatureIdsTo(Set 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 buildTypeMappingProviders() { + Collection collection = new ArrayList(); + collection.add(new XmlEntityProvider()); + collection.add(new XmlMappedSuperclassProvider()); + collection.add(new XmlEmbeddableProvider()); + return collection; + } + + /** + * + * + * @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 'Mapping Key' attribute. + * + *

    + * If the meaning of the 'Mapping Key' attribute isn't clear, + * there really should be more of a description here... + *

    + * + * @return the value of the 'Mapping Key' 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 Mapping Key}' attribute. + * + * + * @param value the new value of the 'Mapping Key' 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 'Class' attribute. + * + *

    + * If the meaning of the 'Class' attribute isn't clear, + * there really should be more of a description here... + *

    + * + * @return the value of the 'Class' 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_ Class}' attribute. + * + * + * @param value the new value of the 'Class' 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 'Attribute Mappings' containment reference list. + * The list contents are of type {@link org.eclipse.jpt.core.internal.content.orm.XmlAttributeMapping}. + * + *

    + * If the meaning of the 'Attribute Mappings' containment reference list isn't clear, + * there really should be more of a description here... + *

    + * + * @return the value of the 'Attribute Mappings' 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 getAttributeMappings() { + EList list = new BasicEList(); + list.addAll(getSpecifiedAttributeMappings()); + list.addAll(getVirtualAttributeMappings()); + return list; + } + + /** + * Returns the value of the 'Specified Attribute Mappings' containment reference list. + * The list contents are of type {@link org.eclipse.jpt.core.internal.content.orm.XmlAttributeMapping}. + * + *

    + * If the meaning of the 'Specified Attribute Mappings' containment reference list isn't clear, + * there really should be more of a description here... + *

    + * + * @return the value of the 'Specified Attribute Mappings' 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 getSpecifiedAttributeMappingsGen() { + if (specifiedAttributeMappings == null) { + specifiedAttributeMappings = new EObjectContainmentEList(XmlAttributeMapping.class, this, OrmPackage.XML_PERSISTENT_TYPE__SPECIFIED_ATTRIBUTE_MAPPINGS); + } + return specifiedAttributeMappings; + } + + public EList getSpecifiedAttributeMappings() { + if (specifiedAttributeMappings == null) { + specifiedAttributeMappings = new SpecifiedAttributeMappingsList(); + } + return getSpecifiedAttributeMappingsGen(); + } + + /** + * Returns the value of the 'Virtual Attribute Mappings' containment reference list. + * The list contents are of type {@link org.eclipse.jpt.core.internal.content.orm.XmlAttributeMapping}. + * + *

    + * If the meaning of the 'Virtual Attribute Mappings' containment reference list isn't clear, + * there really should be more of a description here... + *

    + * + * @return the value of the 'Virtual Attribute Mappings' 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 getVirtualAttributeMappingsGen() { + if (virtualAttributeMappings == null) { + virtualAttributeMappings = new EObjectContainmentEList(XmlAttributeMapping.class, this, OrmPackage.XML_PERSISTENT_TYPE__VIRTUAL_ATTRIBUTE_MAPPINGS); + } + return virtualAttributeMappings; + } + + public EList getVirtualAttributeMappings() { + if (virtualAttributeMappings == null) { + virtualAttributeMappings = new VirtualAttributeMappingsList(); + } + return getVirtualAttributeMappingsGen(); + } + + /** + * Returns the value of the 'Persistent Attributes' reference list. + * The list contents are of type {@link org.eclipse.jpt.core.internal.content.orm.XmlPersistentAttribute}. + * + *

    + * If the meaning of the 'Persistent Attributes' reference list isn't clear, + * there really should be more of a description here... + *

    + * + * @return the value of the 'Persistent Attributes' 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 getPersistentAttributes() { + EList list = new BasicEList(); + list.addAll(getSpecifiedPersistentAttributes()); + list.addAll(getVirtualPersistentAttributes()); + return list; + } + + /** + * Returns the value of the 'Specified Persistent Attributes' reference list. + * The list contents are of type {@link org.eclipse.jpt.core.internal.content.orm.XmlPersistentAttribute}. + * + *

    + * If the meaning of the 'Specified Persistent Attributes' reference list isn't clear, + * there really should be more of a description here... + *

    + * + * @return the value of the 'Specified Persistent Attributes' 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 getSpecifiedPersistentAttributes() { + if (specifiedPersistentAttributes == null) { + specifiedPersistentAttributes = new EObjectEList(XmlPersistentAttribute.class, this, OrmPackage.XML_PERSISTENT_TYPE__SPECIFIED_PERSISTENT_ATTRIBUTES); + } + return specifiedPersistentAttributes; + } + + /** + * Returns the value of the 'Virtual Persistent Attributes' reference list. + * The list contents are of type {@link org.eclipse.jpt.core.internal.content.orm.XmlPersistentAttribute}. + * + *

    + * If the meaning of the 'Default Persistent Attributes' reference list isn't clear, + * there really should be more of a description here... + *

    + * + * @return the value of the 'Virtual Persistent Attributes' 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 getVirtualPersistentAttributes() { + if (virtualPersistentAttributes == null) { + virtualPersistentAttributes = new EObjectEList(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 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 typeMappingProviders() { + return this.typeMappingProviders; + } + + private void insertAttributeMapping(XmlAttributeMapping newMapping) { + int newIndex = CollectionTools.insertionIndexOf(getSpecifiedAttributeMappings(), newMapping, buildMappingComparator()); + getSpecifiedAttributeMappings().add(newIndex, newMapping); + } + + private Comparator buildMappingComparator() { + return new Comparator() { + 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; + } + }; + } + + /** + * + * + * @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(); + } + + /** + * + * + * @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); + } + + /** + * + * + * @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) newValue); + return; + case OrmPackage.XML_PERSISTENT_TYPE__VIRTUAL_ATTRIBUTE_MAPPINGS : + getVirtualAttributeMappings().clear(); + getVirtualAttributeMappings().addAll((Collection) newValue); + return; + case OrmPackage.XML_PERSISTENT_TYPE__SPECIFIED_PERSISTENT_ATTRIBUTES : + getSpecifiedPersistentAttributes().clear(); + getSpecifiedPersistentAttributes().addAll((Collection) newValue); + return; + case OrmPackage.XML_PERSISTENT_TYPE__VIRTUAL_PERSISTENT_ATTRIBUTES : + getVirtualPersistentAttributes().clear(); + getVirtualPersistentAttributes().addAll((Collection) newValue); + return; + } + super.eSet(featureID, newValue); + } + + /** + * + * + * @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); + } + + /** + * + * + * @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); + } + + /** + * + * + * @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); + } + + /** + * + * + * @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); + } + + /** + * + * + * @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 attributes() { + return new ReadOnlyIterator(getPersistentAttributes()); + } + + public Iterator allAttributes() { + return new CompositeIterator(new TransformationIterator(this.inheritanceHierarchy()) { + protected Object transform(Object next) { + return ((IPersistentType) next).attributes(); + } + }); + } + + public Iterator 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 + extends EObjectContainmentEList + { + private AttributeMappingsList(int feature) { + super(XmlAttributeMapping.class, XmlPersistentType.this, feature); + } + + protected abstract EList 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 + extends AttributeMappingsList + { + private SpecifiedAttributeMappingsList() { + super(OrmPackage.XML_PERSISTENT_TYPE__SPECIFIED_ATTRIBUTE_MAPPINGS); + } + + @Override + protected EList persistentAttributes() { + return getSpecifiedPersistentAttributes(); + } + } + private class VirtualAttributeMappingsList + extends AttributeMappingsList + { + private VirtualAttributeMappingsList() { + super(OrmPackage.XML_PERSISTENT_TYPE__VIRTUAL_ATTRIBUTE_MAPPINGS); + } + + @Override + protected EList 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; + +/** + * + * A representation of the model object 'Xml Primary Key Join Column'. + * + * + *

    + * The following features are supported: + *

      + *
    • {@link org.eclipse.jpt.core.internal.content.orm.XmlPrimaryKeyJoinColumn#getSpecifiedReferencedColumnNameForXml Specified Referenced Column Name For Xml}
    • + *
    + *

    + * + * @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() Referenced Column Name}' attribute. + * + * + * @see #getReferencedColumnName() + * @generated + * @ordered + */ + protected static final String REFERENCED_COLUMN_NAME_EDEFAULT = null; + + /** + * The default value of the '{@link #getSpecifiedReferencedColumnName() Specified Referenced Column Name}' attribute. + * + * + * @see #getSpecifiedReferencedColumnName() + * @generated + * @ordered + */ + protected static final String SPECIFIED_REFERENCED_COLUMN_NAME_EDEFAULT = null; + + /** + * The cached value of the '{@link #getSpecifiedReferencedColumnName() Specified Referenced Column Name}' attribute. + * + * + * @see #getSpecifiedReferencedColumnName() + * @generated + * @ordered + */ + protected String specifiedReferencedColumnName = SPECIFIED_REFERENCED_COLUMN_NAME_EDEFAULT; + + /** + * The default value of the '{@link #getDefaultReferencedColumnName() Default Referenced Column Name}' attribute. + * + * + * @see #getDefaultReferencedColumnName() + * @generated + * @ordered + */ + protected static final String DEFAULT_REFERENCED_COLUMN_NAME_EDEFAULT = null; + + /** + * The cached value of the '{@link #getDefaultReferencedColumnName() Default Referenced Column Name}' attribute. + * + * + * @see #getDefaultReferencedColumnName() + * @generated + * @ordered + */ + protected String defaultReferencedColumnName = DEFAULT_REFERENCED_COLUMN_NAME_EDEFAULT; + + /** + * The default value of the '{@link #getSpecifiedReferencedColumnNameForXml() Specified Referenced Column Name For Xml}' attribute. + * + * + * @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); + } + + /** + * + * + * @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 'Referenced Column Name' attribute. + * + *

    + * If the meaning of the 'Referenced Column Name' attribute isn't clear, + * there really should be more of a description here... + *

    + * + * @return the value of the 'Referenced Column Name' 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 'Specified Referenced Column Name' attribute. + * + *

    + * If the meaning of the 'Specified Referenced Column Name' attribute isn't clear, + * there really should be more of a description here... + *

    + * + * @return the value of the 'Specified Referenced Column Name' 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 Specified Referenced Column Name}' attribute. + * + * + * @param value the new value of the 'Specified Referenced Column Name' 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 'Default Referenced Column Name' attribute. + * + *

    + * If the meaning of the 'Default Referenced Column Name' attribute isn't clear, + * there really should be more of a description here... + *

    + * + * @return the value of the 'Default Referenced Column Name' 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 'Specified Referenced Column Name For Xml' attribute. + * + *

    + * If the meaning of the 'Specified Referenced Column Name For Xml' attribute isn't clear, + * there really should be more of a description here... + *

    + * + * @return the value of the 'Specified Referenced Column Name For Xml' 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 Specified Referenced Column Name For Xml}' attribute. + * + * + * @param value the new value of the 'Specified Referenced Column Name For Xml' 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)); + } + + /** + * + * + * @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); + } + + /** + * + * + * @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); + } + + /** + * + * + * @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); + } + + /** + * + * + * @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); + } + + /** + * + * + * @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); + } + + /** + * + * + * @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); + } + + /** + * + * + * @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; + +/** + * + * A representation of the model object 'Xml Query Hint'. + * + * + * + * @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() Name}' attribute. + * + * + * @see #getName() + * @generated + * @ordered + */ + protected static final String NAME_EDEFAULT = null; + + /** + * The cached value of the '{@link #getName() Name}' attribute. + * + * + * @see #getName() + * @generated + * @ordered + */ + protected String name = NAME_EDEFAULT; + + /** + * The default value of the '{@link #getValue() Value}' attribute. + * + * + * @see #getValue() + * @generated + * @ordered + */ + protected static final String VALUE_EDEFAULT = null; + + /** + * The cached value of the '{@link #getValue() Value}' attribute. + * + * + * @see #getValue() + * @generated + * @ordered + */ + protected String value = VALUE_EDEFAULT; + + /** + * + * + * @generated + */ + protected XmlQueryHint() { + super(); + } + + /** + * + * + * @generated + */ + @Override + protected EClass eStaticClass() { + return OrmPackage.Literals.XML_QUERY_HINT; + } + + /** + * Returns the value of the 'Name' attribute. + * + *

    + * If the meaning of the 'Name' attribute isn't clear, + * there really should be more of a description here... + *

    + * + * @return the value of the 'Name' 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 Name}' attribute. + * + * + * @param value the new value of the 'Name' 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 'Value' attribute. + * + *

    + * If the meaning of the 'Value' attribute isn't clear, + * there really should be more of a description here... + *

    + * + * @return the value of the 'Value' 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 Value}' attribute. + * + * + * @param value the new value of the 'Value' 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)); + } + + /** + * + * + * @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); + } + + /** + * + * + * @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); + } + + /** + * + * + * @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); + } + + /** + * + * + * @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); + } + + /** + * + * + * @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); + } + + /** + * + * + * @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); + } + + /** + * + * + * @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; + +/** + * + * A representation of the model object 'Xml Relationship Mapping'. + * + * + * + * @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() Target Entity}' attribute. + * + * + * @see #getTargetEntity() + * @generated + * @ordered + */ + protected static final String TARGET_ENTITY_EDEFAULT = null; + + /** + * The default value of the '{@link #getSpecifiedTargetEntity() Specified Target Entity}' attribute. + * + * + * @see #getSpecifiedTargetEntity() + * @generated + * @ordered + */ + protected static final String SPECIFIED_TARGET_ENTITY_EDEFAULT = null; + + /** + * The cached value of the '{@link #getSpecifiedTargetEntity() Specified Target Entity}' attribute. + * + * + * @see #getSpecifiedTargetEntity() + * @generated + * @ordered + */ + protected String specifiedTargetEntity = SPECIFIED_TARGET_ENTITY_EDEFAULT; + + /** + * The default value of the '{@link #getDefaultTargetEntity() Default Target Entity}' attribute. + * + * + * @see #getDefaultTargetEntity() + * @generated + * @ordered + */ + protected static final String DEFAULT_TARGET_ENTITY_EDEFAULT = null; + + /** + * The cached value of the '{@link #getDefaultTargetEntity() Default Target Entity}' attribute. + * + * + * @see #getDefaultTargetEntity() + * @generated + * @ordered + */ + protected String defaultTargetEntity = DEFAULT_TARGET_ENTITY_EDEFAULT; + + /** + * The cached value of the '{@link #getResolvedTargetEntity() Resolved Target Entity}' reference. + * + * + * @see #getResolvedTargetEntity() + * @generated + * @ordered + */ + protected IEntity resolvedTargetEntity; + + /** + * + * + * @generated + */ + protected XmlRelationshipMapping() { + super(); + } + + /** + * + * + * @generated + */ + @Override + protected EClass eStaticClass() { + return OrmPackage.Literals.XML_RELATIONSHIP_MAPPING; + } + + /** + * Returns the value of the 'Target Entity' attribute. + * + *

    + * If the meaning of the 'Target Entity' attribute isn't clear, + * there really should be more of a description here... + *

    + * + * @return the value of the 'Target Entity' 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 'Specified Target Entity' attribute. + * + *

    + * If the meaning of the 'Specified Target Entity' attribute isn't clear, + * there really should be more of a description here... + *

    + * + * @return the value of the 'Specified Target Entity' 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 Specified Target Entity}' attribute. + * + * + * @param value the new value of the 'Specified Target Entity' 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 'Default Target Entity' attribute. + * + *

    + * If the meaning of the 'Default Target Entity' attribute isn't clear, + * there really should be more of a description here... + *

    + * + * @return the value of the 'Default Target Entity' 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 'Resolved Target Entity' reference. + * + *

    + * If the meaning of the 'Resolved Target Entity' reference isn't clear, + * there really should be more of a description here... + *

    + * + * @return the value of the 'Resolved Target Entity' 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; + } + + /** + * + * + * @generated + */ + public IEntity basicGetResolvedTargetEntity() { + return resolvedTargetEntity; + } + + /** + * Sets the value of the '{@link org.eclipse.jpt.core.internal.content.orm.XmlRelationshipMapping#getResolvedTargetEntity Resolved Target Entity}' reference. + * + * + * @param value the new value of the 'Resolved Target Entity' 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)); + } + + /** + * + * + * @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); + } + + /** + * + * + * @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); + } + + /** + * + * + * @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); + } + + /** + * + * + * @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); + } + + /** + * + * + * @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); + } + + /** + * + * + * @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); + } + + /** + * + * + * @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 possibleMappedByAttributeNames() { + IEntity targetEntity = getResolvedTargetEntity(); + if (targetEntity == null) { + return EmptyIterator.instance(); + } + return new TransformationIterator(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; + +/** + * + * A representation of the model object 'Xml Root Content Node'. + * + * + *

    + * The following features are supported: + *

      + *
    • {@link org.eclipse.jpt.core.internal.content.orm.XmlRootContentNode#getEntityMappings Entity Mappings}
    • + *
    + *

    + * + * @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() Entity Mappings}' reference. + * + * + * @see #getEntityMappings() + * @generated + * @ordered + */ + protected EntityMappingsInternal entityMappings; + + /** + * + * + * @generated + */ + protected XmlRootContentNode() { + super(); + } + + /** + * + * + * @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 'Jpa File' container reference. + * The default value is "". + * It is bidirectional and its opposite is '{@link org.eclipse.jpt.core.internal.JpaFile#getContent Content}'. + * + *

    + * If the meaning of the 'File' reference isn't clear, + * there really should be more of a description here... + *

    + * + * @return the value of the 'Jpa File' 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 'Entity Mappings' reference. + * It is bidirectional and its opposite is '{@link org.eclipse.jpt.core.internal.content.orm.EntityMappingsInternal#getRoot Root}'. + * + *

    + * If the meaning of the 'Entity Mappings' containment reference isn't clear, + * there really should be more of a description here... + *

    + * + * @return the value of the 'Entity Mappings' 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; + } + + /** + * + * + * @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 Entity Mappings}' reference. + * + * + * @param value the new value of the 'Entity Mappings' 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)); + } + + /** + * + * + * @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); + } + + /** + * + * + * @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); + } + + /** + * + * + * @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); + } + + /** + * + * + * @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); + } + + /** + * + * + * @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); + } + + /** + * + * + * @generated + */ + @Override + public void eUnset(int featureID) { + switch (featureID) { + case OrmPackage.XML_ROOT_CONTENT_NODE__ENTITY_MAPPINGS : + setEntityMappings((EntityMappingsInternal) null); + return; + } + super.eUnset(featureID); + } + + /** + * + * + * @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); + } + + /** + * + * + * @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); + } + + /** + * + * + * @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; + +/** + * + * A representation of the model object 'Xml Secondary Table'. + * + * + * + * @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); + } + + /** + * + * + * @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; + +/** + * + * A representation of the model object 'Xml Sequence Generator'. + * + * + * + * @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() Sequence Name}' attribute. + * + * + * @see #getSequenceName() + * @generated + * @ordered + */ + protected static final String SEQUENCE_NAME_EDEFAULT = null; + + /** + * The default value of the '{@link #getSpecifiedSequenceName() Specified Sequence Name}' attribute. + * + * + * @see #getSpecifiedSequenceName() + * @generated + * @ordered + */ + protected static final String SPECIFIED_SEQUENCE_NAME_EDEFAULT = null; + + /** + * The cached value of the '{@link #getSpecifiedSequenceName() Specified Sequence Name}' attribute. + * + * + * @see #getSpecifiedSequenceName() + * @generated + * @ordered + */ + protected String specifiedSequenceName = SPECIFIED_SEQUENCE_NAME_EDEFAULT; + + /** + * The default value of the '{@link #getDefaultSequenceName() Default Sequence Name}' attribute. + * + * + * @see #getDefaultSequenceName() + * @generated + * @ordered + */ + protected static final String DEFAULT_SEQUENCE_NAME_EDEFAULT = null; + + /** + * The cached value of the '{@link #getDefaultSequenceName() Default Sequence Name}' attribute. + * + * + * @see #getDefaultSequenceName() + * @generated + * @ordered + */ + protected String defaultSequenceName = DEFAULT_SEQUENCE_NAME_EDEFAULT; + + /** + * + * + * @generated + */ + protected XmlSequenceGenerator() { + super(); + } + + /** + * + * + * @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 'Specified Sequence Name' attribute. + * + *

    + * If the meaning of the 'Specified Sequence Name' attribute isn't clear, + * there really should be more of a description here... + *

    + * + * @return the value of the 'Specified Sequence Name' 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 Specified Sequence Name}' attribute. + * + * + * @param value the new value of the 'Specified Sequence Name' 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 'Default Sequence Name' attribute. + * + *

    + * If the meaning of the 'Default Sequence Name' attribute isn't clear, + * there really should be more of a description here... + *

    + * + * @return the value of the 'Default Sequence Name' attribute. + * @see org.eclipse.jpt.core.internal.content.orm.OrmPackage#getISequenceGenerator_DefaultSequenceName() + * @model changeable="false" + * @generated + */ + public String getDefaultSequenceName() { + return defaultSequenceName; + } + + /** + * + * + * @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); + } + + /** + * + * + * @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); + } + + /** + * + * + * @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); + } + + /** + * + * + * @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); + } + + /** + * + * + * @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); + } + + /** + * + * + * @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); + } + + /** + * + * + * @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; + +/** + * + * A representation of the model object 'Xml Single Relationship Mapping'. + * + * + * + * @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() Fetch}' attribute. + * + * + * @see #getFetch() + * @generated + * @ordered + */ + protected static final DefaultEagerFetchType FETCH_EDEFAULT = DefaultEagerFetchType.DEFAULT; + + /** + * The cached value of the '{@link #getFetch() Fetch}' attribute. + * + * + * @see #getFetch() + * @generated + * @ordered + */ + protected DefaultEagerFetchType fetch = FETCH_EDEFAULT; + + /** + * The cached value of the '{@link #getSpecifiedJoinColumns() Specified Join Columns}' containment reference list. + * + * + * @see #getSpecifiedJoinColumns() + * @generated + * @ordered + */ + protected EList specifiedJoinColumns; + + /** + * The cached value of the '{@link #getDefaultJoinColumns() Default Join Columns}' containment reference list. + * + * + * @see #getDefaultJoinColumns() + * @generated + * @ordered + */ + protected EList defaultJoinColumns; + + /** + * + * + * @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"); + } + + /** + * + * + * @generated + */ + @Override + protected EClass eStaticClass() { + return OrmPackage.Literals.XML_SINGLE_RELATIONSHIP_MAPPING; + } + + /** + * Returns the value of the 'Fetch' attribute. + * The literals are from the enumeration {@link org.eclipse.jpt.core.internal.mappings.DefaultEagerFetchType}. + * + *

    + * If the meaning of the 'Fetch' attribute isn't clear, + * there really should be more of a description here... + *

    + * + * @return the value of the 'Fetch' 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 Fetch}' attribute. + * + * + * @param value the new value of the 'Fetch' 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 'Join Columns' containment reference list. + * The list contents are of type {@link org.eclipse.jpt.core.internal.mappings.IJoinColumn}. + * + *

    + * If the meaning of the 'Join Columns' containment reference list isn't clear, + * there really should be more of a description here... + *

    + * + * @return the value of the 'Join Columns' 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 getJoinColumns() { + return this.getSpecifiedJoinColumns().isEmpty() ? this.getDefaultJoinColumns() : this.getSpecifiedJoinColumns(); + } + + /** + * Returns the value of the 'Specified Join Columns' containment reference list. + * The list contents are of type {@link org.eclipse.jpt.core.internal.mappings.IJoinColumn}. + * + *

    + * If the meaning of the 'Specified Join Columns' containment reference list isn't clear, + * there really should be more of a description here... + *

    + * + * @return the value of the 'Specified Join Columns' 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 getSpecifiedJoinColumns() { + if (specifiedJoinColumns == null) { + specifiedJoinColumns = new EObjectContainmentEList(IJoinColumn.class, this, OrmPackage.XML_SINGLE_RELATIONSHIP_MAPPING__SPECIFIED_JOIN_COLUMNS); + } + return specifiedJoinColumns; + } + + /** + * Returns the value of the 'Default Join Columns' containment reference list. + * The list contents are of type {@link org.eclipse.jpt.core.internal.mappings.IJoinColumn}. + * + *

    + * If the meaning of the 'Default Join Columns' containment reference list isn't clear, + * there really should be more of a description here... + *

    + * + * @return the value of the 'Default Join Columns' 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 getDefaultJoinColumns() { + if (defaultJoinColumns == null) { + defaultJoinColumns = new EObjectContainmentEList(IJoinColumn.class, this, OrmPackage.XML_SINGLE_RELATIONSHIP_MAPPING__DEFAULT_JOIN_COLUMNS); + } + return defaultJoinColumns; + } + + /** + * + * + * @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); + } + + /** + * + * + * @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); + } + + /** + * + * + * @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) newValue); + return; + case OrmPackage.XML_SINGLE_RELATIONSHIP_MAPPING__DEFAULT_JOIN_COLUMNS : + getDefaultJoinColumns().clear(); + getDefaultJoinColumns().addAll((Collection) newValue); + return; + } + super.eSet(featureID, newValue); + } + + /** + * + * + * @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); + } + + /** + * + * + * @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); + } + + /** + * + * + * @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); + } + + /** + * + * + * @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); + } + + /** + * + * + * @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; + +/** + * + * A representation of the model object 'Xml Table'. + * + * + * + * @see org.eclipse.jpt.core.internal.content.orm.OrmPackage#getXmlTable() + * @model kind="class" + * @generated + */ +public class XmlTable extends AbstractXmlTable +{ + /** + * + * + * @generated + */ + protected XmlTable() { + super(); + } + + protected XmlTable(Owner owner) { + super(owner); + } + + /** + * + * + * @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; + +/** + * + * A representation of the model object 'Xml Table Generator'. + * + * + * + * @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() Table}' attribute. + * + * + * @see #getTable() + * @generated + * @ordered + */ + protected static final String TABLE_EDEFAULT = null; + + /** + * The default value of the '{@link #getSpecifiedTable() Specified Table}' attribute. + * + * + * @see #getSpecifiedTable() + * @generated + * @ordered + */ + protected static final String SPECIFIED_TABLE_EDEFAULT = null; + + /** + * The cached value of the '{@link #getSpecifiedTable() Specified Table}' attribute. + * + * + * @see #getSpecifiedTable() + * @generated + * @ordered + */ + protected String specifiedTable = SPECIFIED_TABLE_EDEFAULT; + + /** + * The default value of the '{@link #getDefaultTable() Default Table}' attribute. + * + * + * @see #getDefaultTable() + * @generated + * @ordered + */ + protected static final String DEFAULT_TABLE_EDEFAULT = null; + + /** + * The cached value of the '{@link #getDefaultTable() Default Table}' attribute. + * + * + * @see #getDefaultTable() + * @generated + * @ordered + */ + protected String defaultTable = DEFAULT_TABLE_EDEFAULT; + + /** + * The default value of the '{@link #getCatalog() Catalog}' attribute. + * + * + * @see #getCatalog() + * @generated + * @ordered + */ + protected static final String CATALOG_EDEFAULT = null; + + /** + * The default value of the '{@link #getSpecifiedCatalog() Specified Catalog}' attribute. + * + * + * @see #getSpecifiedCatalog() + * @generated + * @ordered + */ + protected static final String SPECIFIED_CATALOG_EDEFAULT = null; + + /** + * The cached value of the '{@link #getSpecifiedCatalog() Specified Catalog}' attribute. + * + * + * @see #getSpecifiedCatalog() + * @generated + * @ordered + */ + protected String specifiedCatalog = SPECIFIED_CATALOG_EDEFAULT; + + /** + * The default value of the '{@link #getDefaultCatalog() Default Catalog}' attribute. + * + * + * @see #getDefaultCatalog() + * @generated + * @ordered + */ + protected static final String DEFAULT_CATALOG_EDEFAULT = null; + + /** + * The cached value of the '{@link #getDefaultCatalog() Default Catalog}' attribute. + * + * + * @see #getDefaultCatalog() + * @generated + * @ordered + */ + protected String defaultCatalog = DEFAULT_CATALOG_EDEFAULT; + + /** + * The default value of the '{@link #getSchema() Schema}' attribute. + * + * + * @see #getSchema() + * @generated + * @ordered + */ + protected static final String SCHEMA_EDEFAULT = null; + + /** + * The default value of the '{@link #getSpecifiedSchema() Specified Schema}' attribute. + * + * + * @see #getSpecifiedSchema() + * @generated + * @ordered + */ + protected static final String SPECIFIED_SCHEMA_EDEFAULT = null; + + /** + * The cached value of the '{@link #getSpecifiedSchema() Specified Schema}' attribute. + * + * + * @see #getSpecifiedSchema() + * @generated + * @ordered + */ + protected String specifiedSchema = SPECIFIED_SCHEMA_EDEFAULT; + + /** + * The default value of the '{@link #getDefaultSchema() Default Schema}' attribute. + * + * + * @see #getDefaultSchema() + * @generated + * @ordered + */ + protected static final String DEFAULT_SCHEMA_EDEFAULT = null; + + /** + * The cached value of the '{@link #getDefaultSchema() Default Schema}' attribute. + * + * + * @see #getDefaultSchema() + * @generated + * @ordered + */ + protected String defaultSchema = DEFAULT_SCHEMA_EDEFAULT; + + /** + * The default value of the '{@link #getPkColumnName() Pk Column Name}' attribute. + * + * + * @see #getPkColumnName() + * @generated + * @ordered + */ + protected static final String PK_COLUMN_NAME_EDEFAULT = null; + + /** + * The default value of the '{@link #getSpecifiedPkColumnName() Specified Pk Column Name}' attribute. + * + * + * @see #getSpecifiedPkColumnName() + * @generated + * @ordered + */ + protected static final String SPECIFIED_PK_COLUMN_NAME_EDEFAULT = null; + + /** + * The cached value of the '{@link #getSpecifiedPkColumnName() Specified Pk Column Name}' attribute. + * + * + * @see #getSpecifiedPkColumnName() + * @generated + * @ordered + */ + protected String specifiedPkColumnName = SPECIFIED_PK_COLUMN_NAME_EDEFAULT; + + /** + * The default value of the '{@link #getDefaultPkColumnName() Default Pk Column Name}' attribute. + * + * + * @see #getDefaultPkColumnName() + * @generated + * @ordered + */ + protected static final String DEFAULT_PK_COLUMN_NAME_EDEFAULT = null; + + /** + * The cached value of the '{@link #getDefaultPkColumnName() Default Pk Column Name}' attribute. + * + * + * @see #getDefaultPkColumnName() + * @generated + * @ordered + */ + protected String defaultPkColumnName = DEFAULT_PK_COLUMN_NAME_EDEFAULT; + + /** + * The default value of the '{@link #getValueColumnName() Value Column Name}' attribute. + * + * + * @see #getValueColumnName() + * @generated + * @ordered + */ + protected static final String VALUE_COLUMN_NAME_EDEFAULT = null; + + /** + * The default value of the '{@link #getSpecifiedValueColumnName() Specified Value Column Name}' attribute. + * + * + * @see #getSpecifiedValueColumnName() + * @generated + * @ordered + */ + protected static final String SPECIFIED_VALUE_COLUMN_NAME_EDEFAULT = null; + + /** + * The cached value of the '{@link #getSpecifiedValueColumnName() Specified Value Column Name}' attribute. + * + * + * @see #getSpecifiedValueColumnName() + * @generated + * @ordered + */ + protected String specifiedValueColumnName = SPECIFIED_VALUE_COLUMN_NAME_EDEFAULT; + + /** + * The default value of the '{@link #getDefaultValueColumnName() Default Value Column Name}' attribute. + * + * + * @see #getDefaultValueColumnName() + * @generated + * @ordered + */ + protected static final String DEFAULT_VALUE_COLUMN_NAME_EDEFAULT = null; + + /** + * The cached value of the '{@link #getDefaultValueColumnName() Default Value Column Name}' attribute. + * + * + * @see #getDefaultValueColumnName() + * @generated + * @ordered + */ + protected String defaultValueColumnName = DEFAULT_VALUE_COLUMN_NAME_EDEFAULT; + + /** + * The default value of the '{@link #getPkColumnValue() Pk Column Value}' attribute. + * + * + * @see #getPkColumnValue() + * @generated + * @ordered + */ + protected static final String PK_COLUMN_VALUE_EDEFAULT = null; + + /** + * The default value of the '{@link #getSpecifiedPkColumnValue() Specified Pk Column Value}' attribute. + * + * + * @see #getSpecifiedPkColumnValue() + * @generated + * @ordered + */ + protected static final String SPECIFIED_PK_COLUMN_VALUE_EDEFAULT = null; + + /** + * The cached value of the '{@link #getSpecifiedPkColumnValue() Specified Pk Column Value}' attribute. + * + * + * @see #getSpecifiedPkColumnValue() + * @generated + * @ordered + */ + protected String specifiedPkColumnValue = SPECIFIED_PK_COLUMN_VALUE_EDEFAULT; + + /** + * The default value of the '{@link #getDefaultPkColumnValue() Default Pk Column Value}' attribute. + * + * + * @see #getDefaultPkColumnValue() + * @generated + * @ordered + */ + protected static final String DEFAULT_PK_COLUMN_VALUE_EDEFAULT = null; + + /** + * The cached value of the '{@link #getDefaultPkColumnValue() Default Pk Column Value}' attribute. + * + * + * @see #getDefaultPkColumnValue() + * @generated + * @ordered + */ + protected String defaultPkColumnValue = DEFAULT_PK_COLUMN_VALUE_EDEFAULT; + + /** + * + * + * @generated + */ + protected XmlTableGenerator() { + super(); + } + + /** + * + * + * @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 'Specified Table' attribute. + * + *

    + * If the meaning of the 'Specified Table' attribute isn't clear, + * there really should be more of a description here... + *

    + * + * @return the value of the 'Specified Table' 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 Specified Table}' attribute. + * + * + * @param value the new value of the 'Specified Table' 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 'Default Table' attribute. + * + *

    + * If the meaning of the 'Default Table' attribute isn't clear, + * there really should be more of a description here... + *

    + * + * @return the value of the 'Default Table' 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 'Specified Catalog' attribute. + * + *

    + * If the meaning of the 'Specified Catalog' attribute isn't clear, + * there really should be more of a description here... + *

    + * + * @return the value of the 'Specified Catalog' 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 Specified Catalog}' attribute. + * + * + * @param value the new value of the 'Specified Catalog' 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 'Default Catalog' attribute. + * + *

    + * If the meaning of the 'Default Catalog' attribute isn't clear, + * there really should be more of a description here... + *

    + * + * @return the value of the 'Default Catalog' 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 'Specified Schema' attribute. + * + *

    + * If the meaning of the 'Specified Schema' attribute isn't clear, + * there really should be more of a description here... + *

    + * + * @return the value of the 'Specified Schema' 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 Specified Schema}' attribute. + * + * + * @param value the new value of the 'Specified Schema' 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 'Default Schema' attribute. + * + *

    + * If the meaning of the 'Default Schema' attribute isn't clear, + * there really should be more of a description here... + *

    + * + * @return the value of the 'Default Schema' 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 'Specified Pk Column Name' attribute. + * + *

    + * If the meaning of the 'Specified Pk Column Name' attribute isn't clear, + * there really should be more of a description here... + *

    + * + * @return the value of the 'Specified Pk Column Name' 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 Specified Pk Column Name}' attribute. + * + * + * @param value the new value of the 'Specified Pk Column Name' 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 'Default Pk Column Name' attribute. + * + *

    + * If the meaning of the 'Default Pk Column Name' attribute isn't clear, + * there really should be more of a description here... + *

    + * + * @return the value of the 'Default Pk Column Name' 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 'Specified Value Column Name' attribute. + * + *

    + * If the meaning of the 'Specified Value Column Name' attribute isn't clear, + * there really should be more of a description here... + *

    + * + * @return the value of the 'Specified Value Column Name' 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 Specified Value Column Name}' attribute. + * + * + * @param value the new value of the 'Specified Value Column Name' 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 'Default Value Column Name' attribute. + * + *

    + * If the meaning of the 'Default Value Column Name' attribute isn't clear, + * there really should be more of a description here... + *

    + * + * @return the value of the 'Default Value Column Name' 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 'Specified Pk Column Value' attribute. + * + *

    + * If the meaning of the 'Specified Pk Column Value' attribute isn't clear, + * there really should be more of a description here... + *

    + * + * @return the value of the 'Specified Pk Column Value' 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 Specified Pk Column Value}' attribute. + * + * + * @param value the new value of the 'Specified Pk Column Value' 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 'Default Pk Column Value' attribute. + * + *

    + * If the meaning of the 'Default Pk Column Value' attribute isn't clear, + * there really should be more of a description here... + *

    + * + * @return the value of the 'Default Pk Column Value' attribute. + * @see org.eclipse.jpt.core.internal.content.orm.OrmPackage#getITableGenerator_DefaultPkColumnValue() + * @model changeable="false" + * @generated + */ + public String getDefaultPkColumnValue() { + return defaultPkColumnValue; + } + + /** + * + * + * @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); + } + + /** + * + * + * @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); + } + + /** + * + * + * @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); + } + + /** + * + * + * @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); + } + + /** + * + * + * @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); + } + + /** + * + * + * @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); + } + + /** + * + * + * @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; + +/** + * + * A representation of the model object 'Xml Transient'. + * + * + * + * @see org.eclipse.jpt.core.internal.content.orm.OrmPackage#getXmlTransient() + * @model kind="class" + * @generated + */ +public class XmlTransient extends XmlAttributeMapping implements ITransient +{ + /** + * + * + * @generated + */ + protected XmlTransient() { + super(); + } + + @Override + protected void initializeOn(XmlAttributeMapping newMapping) { + newMapping.initializeFromXmlTransientMapping(this); + } + + /** + * + * + * @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; + +/** + * + * An implementation of the model object 'Xml Persistent Type Mapping'. + * + * + *

    + * The following features are supported: + *

      + *
    • {@link org.eclipse.jpt.core.internal.content.orm.XmlTypeMapping#getDefaultAccess Default Access}
    • + *
    • {@link org.eclipse.jpt.core.internal.content.orm.XmlTypeMapping#getSpecifiedAccess Specified Access}
    • + *
    • {@link org.eclipse.jpt.core.internal.content.orm.XmlTypeMapping#getAccess Access}
    • + *
    • {@link org.eclipse.jpt.core.internal.content.orm.XmlTypeMapping#getMetadataComplete Metadata Complete}
    • + *
    • {@link org.eclipse.jpt.core.internal.content.orm.XmlTypeMapping#getPersistentType Persistent Type}
    • + *
    + *

    + * + * @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() Name}' attribute. + * + * + * @see #getName() + * @generated + * @ordered + */ + protected static final String NAME_EDEFAULT = null; + + /** + * The default value of the '{@link #getTableName() Table Name}' attribute. + * + * + * @see #getTableName() + * @generated + * @ordered + */ + protected static final String TABLE_NAME_EDEFAULT = null; + + /** + * The default value of the '{@link #getDefaultAccess() Default Access}' attribute. + * + * + * @see #getDefaultAccess() + * @generated + * @ordered + */ + protected static final AccessType DEFAULT_ACCESS_EDEFAULT = AccessType.DEFAULT; + + /** + * The cached value of the '{@link #getDefaultAccess() Default Access}' attribute. + * + * + * @see #getDefaultAccess() + * @generated + * @ordered + */ + protected AccessType defaultAccess = DEFAULT_ACCESS_EDEFAULT; + + /** + * The default value of the '{@link #getSpecifiedAccess() Specified Access}' attribute. + * + * + * @see #getSpecifiedAccess() + * @generated + * @ordered + */ + protected static final AccessType SPECIFIED_ACCESS_EDEFAULT = AccessType.DEFAULT; + + /** + * The cached value of the '{@link #getSpecifiedAccess() Specified Access}' attribute. + * + * + * @see #getSpecifiedAccess() + * @generated + * @ordered + */ + protected AccessType specifiedAccess = SPECIFIED_ACCESS_EDEFAULT; + + /** + * The default value of the '{@link #getAccess() Access}' attribute. + * + * + * @see #getAccess() + * @generated + * @ordered + */ + protected static final AccessType ACCESS_EDEFAULT = AccessType.DEFAULT; + + /** + * The default value of the '{@link #getMetadataComplete() Metadata Complete}' attribute. + * + * + * @see #getMetadataComplete() + * @generated + * @ordered + */ + protected static final DefaultFalseBoolean METADATA_COMPLETE_EDEFAULT = DefaultFalseBoolean.DEFAULT; + + /** + * The cached value of the '{@link #getMetadataComplete() Metadata Complete}' attribute. + * + * + * @see #getMetadataComplete() + * @generated + * @ordered + */ + protected DefaultFalseBoolean metadataComplete = METADATA_COMPLETE_EDEFAULT; + + /** + * The cached value of the '{@link #getPersistentType() Persistent Type}' containment reference. + * + * + * @see #getPersistentType() + * @generated + * @ordered + */ + protected XmlPersistentType persistentType; + + /** + * + * + * @generated NOT + */ + protected XmlTypeMapping() { + super(); + XmlPersistentType persistentType = createXmlPersistentType(); + setPersistentType(persistentType); + } + + protected XmlPersistentType createXmlPersistentType() { + return OrmFactory.eINSTANCE.createXmlPersistentType(getKey()); + } + + /** + * + * + * @generated + */ + @Override + protected EClass eStaticClass() { + return OrmPackage.Literals.XML_TYPE_MAPPING; + } + + /** + * Returns the value of the 'Name' attribute. + * + *

    + * If the meaning of the 'Name' attribute isn't clear, + * there really should be more of a description here... + *

    + * + * @return the value of the 'Name' 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 'Table Name' attribute. + * + *

    + * If the meaning of the 'Table Name' attribute isn't clear, + * there really should be more of a description here... + *

    + * + * @return the value of the 'Table Name' 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 'Default Access' attribute. + * The literals are from the enumeration {@link org.eclipse.jpt.core.internal.AccessType}. + * + *

    + * If the meaning of the 'Default Access' attribute isn't clear, + * there really should be more of a description here... + *

    + * + * @return the value of the 'Default Access' 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 Default Access}' attribute. + * + * + * @param value the new value of the 'Default Access' 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 'Specified Access' attribute. + * The literals are from the enumeration {@link org.eclipse.jpt.core.internal.AccessType}. + * + *

    + * If the meaning of the 'Specified Access' attribute isn't clear, + * there really should be more of a description here... + *

    + * + * @return the value of the 'Specified Access' 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 Specified Access}' attribute. + * + * + * @param value the new value of the 'Specified Access' 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 'Access' attribute. + * The literals are from the enumeration {@link org.eclipse.jpt.core.internal.content.orm.AccessType}. + * + *

    + * If the meaning of the 'Access' attribute isn't clear, + * there really should be more of a description here... + *

    + * + * @return the value of the 'Access' 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 'Metadata Complete' attribute. + * The literals are from the enumeration {@link org.eclipse.jpt.core.internal.mappings.DefaultFalseBoolean}. + * + * + * @return the value of the 'Metadata Complete' 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 Metadata Complete}' attribute. + * + * + * @param value the new value of the 'Metadata Complete' 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 'Persistent Type' containment reference. + * + * + * @return the value of the 'Persistent Type' 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(); + } + + /** + * + * + * @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 Persistent Type}' containment reference. + * + * + * @param value the new value of the 'Persistent Type' 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)); + } + + /** + * + *

    + * If the meaning of the 'Attribute Mappings' containment reference list isn't clear, + * there really should be more of a description here... + *

    + * + * @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); + } + + /** + * + * + * @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); + } + + /** + * + * + * @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); + } + + /** + * + * + * @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); + } + + /** + * + * + * @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); + } + + /** + * + * + * @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); + } + + /** + * + * + * @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); + } + + /** + * + * + * @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; + +/** + * + * A representation of the model object 'Xml Version'. + * + * + * + * @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() Column}' containment reference. + * + * + * @see #getColumn() + * @generated + * @ordered + */ + protected IColumn column; + + /** + * The default value of the '{@link #getTemporal() Temporal}' attribute. + * + * + * @see #getTemporal() + * @generated + * @ordered + */ + protected static final TemporalType TEMPORAL_EDEFAULT = TemporalType.NULL; + + /** + * The cached value of the '{@link #getTemporal() Temporal}' attribute. + * + * + * @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); + } + + /** + * + * + * @generated + */ + @Override + protected EClass eStaticClass() { + return OrmPackage.Literals.XML_VERSION; + } + + /** + * Returns the value of the 'Column' containment reference. + * + *

    + * If the meaning of the 'Column' containment reference isn't clear, + * there really should be more of a description here... + *

    + * + * @return the value of the 'Column' 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; + } + + /** + * + * + * @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 'Temporal' attribute. + * The literals are from the enumeration {@link org.eclipse.jpt.core.internal.mappings.TemporalType}. + * + *

    + * If the meaning of the 'Temporal' attribute isn't clear, + * there really should be more of a description here... + *

    + * + * @return the value of the 'Temporal' 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 Temporal}' attribute. + * + * + * @param value the new value of the 'Temporal' 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 'Column For Xml' reference. + * + *

    + * If the meaning of the 'Column For Xml' reference isn't clear, + * there really should be more of a description here... + *

    + * + * @return the value of the 'Column For Xml' 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 Column For Xml}' reference. + * + * + * @param value the new value of the 'Column For Xml' 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); + } + + /** + * + * + * @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); + } + + /** + * + * + * @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); + } + + /** + * + * + * @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); + } + + /** + * + * + * @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); + } + + /** + * + * + * @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); + } + + /** + * + * + * @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); + } + + /** + * + * + * @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); + } + + /** + * + * + * @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: + * + * + * + * ==> cascadePersist == true + * + * vs. + * + * + * ==> 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 translatorMap; + + public MultiObjectDependencyTranslator(String domNameAndPath, EStructuralFeature aFeature, EStructuralFeature aDependentFeature) { + super(domNameAndPath, aFeature, aDependentFeature); + this.translatorMap = new HashMap(); + } + + + 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 translatorMap; + + public TypeMappingsTranslator() { + super(ENTITY_MAPPINGS_PATH, JPA_CORE_XML_PKG.getEntityMappingsInternal_TypeMappings()); + this.translatorMap = new HashMap(); + } + + @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; + +/** + * + * The Adapter Factory for the model. + * It provides an adapter createXXX method for each class of the model. + * + * @see org.eclipse.jpt.core.internal.content.orm.OrmPackage + * @generated + */ +public class OrmAdapterFactory extends AdapterFactoryImpl +{ + /** + * The cached model package. + * + * + * @generated + */ + protected static OrmPackage modelPackage; + + /** + * Creates an instance of the adapter factory. + * + * + * @generated + */ + public OrmAdapterFactory() { + if (modelPackage == null) { + modelPackage = OrmPackage.eINSTANCE; + } + } + + /** + * Returns whether this factory is applicable for the type of the object. + * + * This implementation returns true if the object is either the model's package or is an instance object of the model. + * + * @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 createXXX methods. + * + * + * @generated + */ + protected OrmSwitch modelSwitch = new OrmSwitch() { + @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 target. + * + * + * @param target the object to adapt. + * @return the adapter for the target. + * @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 Xml EObject}'. + * + * This default implementation returns null so that we can easily ignore cases; + * it's useful to ignore a case when inheritance will catch all the cases anyway. + * + * @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 Xml Root Content Node}'. + * + * This default implementation returns null so that we can easily ignore cases; + * it's useful to ignore a case when inheritance will catch all the cases anyway. + * + * @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 Entity Mappings Internal}'. + * + * This default implementation returns null so that we can easily ignore cases; + * it's useful to ignore a case when inheritance will catch all the cases anyway. + * + * @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 Entity Mappings}'. + * + * This default implementation returns null so that we can easily ignore cases; + * it's useful to ignore a case when inheritance will catch all the cases anyway. + * + * @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 Entity Mappings For Xml}'. + * + * This default implementation returns null so that we can easily ignore cases; + * it's useful to ignore a case when inheritance will catch all the cases anyway. + * + * @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 Xml Type Mapping}'. + * + * This default implementation returns null so that we can easily ignore cases; + * it's useful to ignore a case when inheritance will catch all the cases anyway. + * + * @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 Xml Persistent Type}'. + * + * This default implementation returns null so that we can easily ignore cases; + * it's useful to ignore a case when inheritance will catch all the cases anyway. + * + * @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 Xml Entity}'. + * + * This default implementation returns null so that we can easily ignore cases; + * it's useful to ignore a case when inheritance will catch all the cases anyway. + * + * @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 Xml Embeddable}'. + * + * This default implementation returns null so that we can easily ignore cases; + * it's useful to ignore a case when inheritance will catch all the cases anyway. + * + * @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 Xml Attribute Mapping}'. + * + * This default implementation returns null so that we can easily ignore cases; + * it's useful to ignore a case when inheritance will catch all the cases anyway. + * + * @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 Xml Null Attribute Mapping}'. + * + * This default implementation returns null so that we can easily ignore cases; + * it's useful to ignore a case when inheritance will catch all the cases anyway. + * + * @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 Xml Persistent Attribute}'. + * + * This default implementation returns null so that we can easily ignore cases; + * it's useful to ignore a case when inheritance will catch all the cases anyway. + * + * @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 Xml Basic}'. + * + * This default implementation returns null so that we can easily ignore cases; + * it's useful to ignore a case when inheritance will catch all the cases anyway. + * + * @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 Xml Id}'. + * + * This default implementation returns null so that we can easily ignore cases; + * it's useful to ignore a case when inheritance will catch all the cases anyway. + * + * @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 Xml Transient}'. + * + * This default implementation returns null so that we can easily ignore cases; + * it's useful to ignore a case when inheritance will catch all the cases anyway. + * + * @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 Xml Embedded}'. + * + * This default implementation returns null so that we can easily ignore cases; + * it's useful to ignore a case when inheritance will catch all the cases anyway. + * + * @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 Xml Embedded Id}'. + * + * This default implementation returns null so that we can easily ignore cases; + * it's useful to ignore a case when inheritance will catch all the cases anyway. + * + * @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 Xml Version}'. + * + * This default implementation returns null so that we can easily ignore cases; + * it's useful to ignore a case when inheritance will catch all the cases anyway. + * + * @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 Xml Multi Relationship Mapping Internal}'. + * + * This default implementation returns null so that we can easily ignore cases; + * it's useful to ignore a case when inheritance will catch all the cases anyway. + * + * @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 Xml Multi Relationship Mapping For Xml}'. + * + * This default implementation returns null so that we can easily ignore cases; + * it's useful to ignore a case when inheritance will catch all the cases anyway. + * + * @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 Xml Multi Relationship Mapping}'. + * + * This default implementation returns null so that we can easily ignore cases; + * it's useful to ignore a case when inheritance will catch all the cases anyway. + * + * @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 Xml One To Many}'. + * + * This default implementation returns null so that we can easily ignore cases; + * it's useful to ignore a case when inheritance will catch all the cases anyway. + * + * @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 Xml Many To Many}'. + * + * This default implementation returns null so that we can easily ignore cases; + * it's useful to ignore a case when inheritance will catch all the cases anyway. + * + * @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 Persistence Unit Metadata Internal}'. + * + * This default implementation returns null so that we can easily ignore cases; + * it's useful to ignore a case when inheritance will catch all the cases anyway. + * + * @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 Persistence Unit Metadata}'. + * + * This default implementation returns null so that we can easily ignore cases; + * it's useful to ignore a case when inheritance will catch all the cases anyway. + * + * @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 Persistence Unit Metadata For Xml}'. + * + * This default implementation returns null so that we can easily ignore cases; + * it's useful to ignore a case when inheritance will catch all the cases anyway. + * + * @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 Persistence Unit Defaults Internal}'. + * + * This default implementation returns null so that we can easily ignore cases; + * it's useful to ignore a case when inheritance will catch all the cases anyway. + * + * @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 Persistence Unit Defaults}'. + * + * This default implementation returns null so that we can easily ignore cases; + * it's useful to ignore a case when inheritance will catch all the cases anyway. + * + * @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 Persistence Unit Defaults For Xml}'. + * + * This default implementation returns null so that we can easily ignore cases; + * it's useful to ignore a case when inheritance will catch all the cases anyway. + * + * @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 Xml Table}'. + * + * This default implementation returns null so that we can easily ignore cases; + * it's useful to ignore a case when inheritance will catch all the cases anyway. + * + * @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 Abstract Xml Named Column}'. + * + * This default implementation returns null so that we can easily ignore cases; + * it's useful to ignore a case when inheritance will catch all the cases anyway. + * + * @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 Abstract Xml Column}'. + * + * This default implementation returns null so that we can easily ignore cases; + * it's useful to ignore a case when inheritance will catch all the cases anyway. + * + * @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 Xml Column}'. + * + * This default implementation returns null so that we can easily ignore cases; + * it's useful to ignore a case when inheritance will catch all the cases anyway. + * + * @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 Xml Join Column}'. + * + * This default implementation returns null so that we can easily ignore cases; + * it's useful to ignore a case when inheritance will catch all the cases anyway. + * + * @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 IXml Column Mapping}'. + * + * This default implementation returns null so that we can easily ignore cases; + * it's useful to ignore a case when inheritance will catch all the cases anyway. + * + * @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 Xml Many To One}'. + * + * This default implementation returns null so that we can easily ignore cases; + * it's useful to ignore a case when inheritance will catch all the cases anyway. + * + * @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 Xml One To One}'. + * + * This default implementation returns null so that we can easily ignore cases; + * it's useful to ignore a case when inheritance will catch all the cases anyway. + * + * @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 Xml Single Relationship Mapping}'. + * + * This default implementation returns null so that we can easily ignore cases; + * it's useful to ignore a case when inheritance will catch all the cases anyway. + * + * @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 Xml Relationship Mapping}'. + * + * This default implementation returns null so that we can easily ignore cases; + * it's useful to ignore a case when inheritance will catch all the cases anyway. + * + * @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 Xml Join Table}'. + * + * This default implementation returns null so that we can easily ignore cases; + * it's useful to ignore a case when inheritance will catch all the cases anyway. + * + * @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 Abstract Xml Table}'. + * + * This default implementation returns null so that we can easily ignore cases; + * it's useful to ignore a case when inheritance will catch all the cases anyway. + * + * @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 Xml Override}'. + * + * This default implementation returns null so that we can easily ignore cases; + * it's useful to ignore a case when inheritance will catch all the cases anyway. + * + * @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 Xml Attribute Override}'. + * + * This default implementation returns null so that we can easily ignore cases; + * it's useful to ignore a case when inheritance will catch all the cases anyway. + * + * @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 Xml Association Override}'. + * + * This default implementation returns null so that we can easily ignore cases; + * it's useful to ignore a case when inheritance will catch all the cases anyway. + * + * @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 Xml Discriminator Column}'. + * + * This default implementation returns null so that we can easily ignore cases; + * it's useful to ignore a case when inheritance will catch all the cases anyway. + * + * @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 Xml Secondary Table}'. + * + * This default implementation returns null so that we can easily ignore cases; + * it's useful to ignore a case when inheritance will catch all the cases anyway. + * + * @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 Xml Primary Key Join Column}'. + * + * This default implementation returns null so that we can easily ignore cases; + * it's useful to ignore a case when inheritance will catch all the cases anyway. + * + * @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 Xml Generated Value}'. + * + * This default implementation returns null so that we can easily ignore cases; + * it's useful to ignore a case when inheritance will catch all the cases anyway. + * + * @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 Xml Generator}'. + * + * This default implementation returns null so that we can easily ignore cases; + * it's useful to ignore a case when inheritance will catch all the cases anyway. + * + * @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 Xml Sequence Generator}'. + * + * This default implementation returns null so that we can easily ignore cases; + * it's useful to ignore a case when inheritance will catch all the cases anyway. + * + * @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 Xml Table Generator}'. + * + * This default implementation returns null so that we can easily ignore cases; + * it's useful to ignore a case when inheritance will catch all the cases anyway. + * + * @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 Xml Order By}'. + * + * This default implementation returns null so that we can easily ignore cases; + * it's useful to ignore a case when inheritance will catch all the cases anyway. + * + * @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 Abstract Xml Query}'. + * + * This default implementation returns null so that we can easily ignore cases; + * it's useful to ignore a case when inheritance will catch all the cases anyway. + * + * @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 Xml Named Query}'. + * + * This default implementation returns null so that we can easily ignore cases; + * it's useful to ignore a case when inheritance will catch all the cases anyway. + * + * @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 Xml Named Native Query}'. + * + * This default implementation returns null so that we can easily ignore cases; + * it's useful to ignore a case when inheritance will catch all the cases anyway. + * + * @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 Xml Query Hint}'. + * + * This default implementation returns null so that we can easily ignore cases; + * it's useful to ignore a case when inheritance will catch all the cases anyway. + * + * @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 IJpa EObject}'. + * + * This default implementation returns null so that we can easily ignore cases; + * it's useful to ignore a case when inheritance will catch all the cases anyway. + * + * @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 Jpa EObject}'. + * + * This default implementation returns null so that we can easily ignore cases; + * it's useful to ignore a case when inheritance will catch all the cases anyway. + * + * @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 IJpa Source Object}'. + * + * This default implementation returns null so that we can easily ignore cases; + * it's useful to ignore a case when inheritance will catch all the cases anyway. + * + * @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 IXml EObject}'. + * + * This default implementation returns null so that we can easily ignore cases; + * it's useful to ignore a case when inheritance will catch all the cases anyway. + * + * @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 IJpa Content Node}'. + * + * This default implementation returns null so that we can easily ignore cases; + * it's useful to ignore a case when inheritance will catch all the cases anyway. + * + * @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 IJpa Root Content Node}'. + * + * This default implementation returns null so that we can easily ignore cases; + * it's useful to ignore a case when inheritance will catch all the cases anyway. + * + * @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 Xml Mapped Superclass}'. + * + * This default implementation returns null so that we can easily ignore cases; + * it's useful to ignore a case when inheritance will catch all the cases anyway. + * + * @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 Xml Entity Internal}'. + * + * This default implementation returns null so that we can easily ignore cases; + * it's useful to ignore a case when inheritance will catch all the cases anyway. + * + * @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 Xml Entity For Xml}'. + * + * This default implementation returns null so that we can easily ignore cases; + * it's useful to ignore a case when inheritance will catch all the cases anyway. + * + * @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 IAttribute Mapping}'. + * + * This default implementation returns null so that we can easily ignore cases; + * it's useful to ignore a case when inheritance will catch all the cases anyway. + * + * @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 IColumn Mapping}'. + * + * This default implementation returns null so that we can easily ignore cases; + * it's useful to ignore a case when inheritance will catch all the cases anyway. + * + * @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 IPersistent Attribute}'. + * + * This default implementation returns null so that we can easily ignore cases; + * it's useful to ignore a case when inheritance will catch all the cases anyway. + * + * @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 ITable}'. + * + * This default implementation returns null so that we can easily ignore cases; + * it's useful to ignore a case when inheritance will catch all the cases anyway. + * + * @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 INamed Column}'. + * + * This default implementation returns null so that we can easily ignore cases; + * it's useful to ignore a case when inheritance will catch all the cases anyway. + * + * @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 IAbstract Column}'. + * + * This default implementation returns null so that we can easily ignore cases; + * it's useful to ignore a case when inheritance will catch all the cases anyway. + * + * @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 IColumn}'. + * + * This default implementation returns null so that we can easily ignore cases; + * it's useful to ignore a case when inheritance will catch all the cases anyway. + * + * @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 IAbstract Join Column}'. + * + * This default implementation returns null so that we can easily ignore cases; + * it's useful to ignore a case when inheritance will catch all the cases anyway. + * + * @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 IJoin Column}'. + * + * This default implementation returns null so that we can easily ignore cases; + * it's useful to ignore a case when inheritance will catch all the cases anyway. + * + * @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 ISingle Relationship Mapping}'. + * + * This default implementation returns null so that we can easily ignore cases; + * it's useful to ignore a case when inheritance will catch all the cases anyway. + * + * @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 IMany To One}'. + * + * This default implementation returns null so that we can easily ignore cases; + * it's useful to ignore a case when inheritance will catch all the cases anyway. + * + * @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 IOne To One}'. + * + * This default implementation returns null so that we can easily ignore cases; + * it's useful to ignore a case when inheritance will catch all the cases anyway. + * + * @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 IJoin Table}'. + * + * This default implementation returns null so that we can easily ignore cases; + * it's useful to ignore a case when inheritance will catch all the cases anyway. + * + * @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 IOverride}'. + * + * This default implementation returns null so that we can easily ignore cases; + * it's useful to ignore a case when inheritance will catch all the cases anyway. + * + * @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 IAttribute Override}'. + * + * This default implementation returns null so that we can easily ignore cases; + * it's useful to ignore a case when inheritance will catch all the cases anyway. + * + * @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 IAssociation Override}'. + * + * This default implementation returns null so that we can easily ignore cases; + * it's useful to ignore a case when inheritance will catch all the cases anyway. + * + * @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 IDiscriminator Column}'. + * + * This default implementation returns null so that we can easily ignore cases; + * it's useful to ignore a case when inheritance will catch all the cases anyway. + * + * @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 ISecondary Table}'. + * + * This default implementation returns null so that we can easily ignore cases; + * it's useful to ignore a case when inheritance will catch all the cases anyway. + * + * @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 IPrimary Key Join Column}'. + * + * This default implementation returns null so that we can easily ignore cases; + * it's useful to ignore a case when inheritance will catch all the cases anyway. + * + * @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 IGenerated Value}'. + * + * This default implementation returns null so that we can easily ignore cases; + * it's useful to ignore a case when inheritance will catch all the cases anyway. + * + * @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 IGenerator}'. + * + * This default implementation returns null so that we can easily ignore cases; + * it's useful to ignore a case when inheritance will catch all the cases anyway. + * + * @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 ISequence Generator}'. + * + * This default implementation returns null so that we can easily ignore cases; + * it's useful to ignore a case when inheritance will catch all the cases anyway. + * + * @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 ITable Generator}'. + * + * This default implementation returns null so that we can easily ignore cases; + * it's useful to ignore a case when inheritance will catch all the cases anyway. + * + * @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 IOrder By}'. + * + * This default implementation returns null so that we can easily ignore cases; + * it's useful to ignore a case when inheritance will catch all the cases anyway. + * + * @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 IQuery}'. + * + * This default implementation returns null so that we can easily ignore cases; + * it's useful to ignore a case when inheritance will catch all the cases anyway. + * + * @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 INamed Query}'. + * + * This default implementation returns null so that we can easily ignore cases; + * it's useful to ignore a case when inheritance will catch all the cases anyway. + * + * @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 INamed Native Query}'. + * + * This default implementation returns null so that we can easily ignore cases; + * it's useful to ignore a case when inheritance will catch all the cases anyway. + * + * @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 IQuery Hint}'. + * + * This default implementation returns null so that we can easily ignore cases; + * it's useful to ignore a case when inheritance will catch all the cases anyway. + * + * @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 IBasic}'. + * + * This default implementation returns null so that we can easily ignore cases; + * it's useful to ignore a case when inheritance will catch all the cases anyway. + * + * @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 IId}'. + * + * This default implementation returns null so that we can easily ignore cases; + * it's useful to ignore a case when inheritance will catch all the cases anyway. + * + * @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 ITransient}'. + * + * This default implementation returns null so that we can easily ignore cases; + * it's useful to ignore a case when inheritance will catch all the cases anyway. + * + * @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 IEmbedded}'. + * + * This default implementation returns null so that we can easily ignore cases; + * it's useful to ignore a case when inheritance will catch all the cases anyway. + * + * @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 IEmbedded Id}'. + * + * This default implementation returns null so that we can easily ignore cases; + * it's useful to ignore a case when inheritance will catch all the cases anyway. + * + * @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 IVersion}'. + * + * This default implementation returns null so that we can easily ignore cases; + * it's useful to ignore a case when inheritance will catch all the cases anyway. + * + * @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 IRelationship Mapping}'. + * + * This default implementation returns null so that we can easily ignore cases; + * it's useful to ignore a case when inheritance will catch all the cases anyway. + * + * @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 INon Owning Mapping}'. + * + * This default implementation returns null so that we can easily ignore cases; + * it's useful to ignore a case when inheritance will catch all the cases anyway. + * + * @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 IMulti Relationship Mapping}'. + * + * This default implementation returns null so that we can easily ignore cases; + * it's useful to ignore a case when inheritance will catch all the cases anyway. + * + * @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 IOne To Many}'. + * + * This default implementation returns null so that we can easily ignore cases; + * it's useful to ignore a case when inheritance will catch all the cases anyway. + * + * @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 IMany To Many}'. + * + * This default implementation returns null so that we can easily ignore cases; + * it's useful to ignore a case when inheritance will catch all the cases anyway. + * + * @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 IPersistent Type}'. + * + * This default implementation returns null so that we can easily ignore cases; + * it's useful to ignore a case when inheritance will catch all the cases anyway. + * + * @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 IMapped Superclass}'. + * + * This default implementation returns null so that we can easily ignore cases; + * it's useful to ignore a case when inheritance will catch all the cases anyway. + * + * @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 IEntity}'. + * + * This default implementation returns null so that we can easily ignore cases; + * it's useful to ignore a case when inheritance will catch all the cases anyway. + * + * @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 IEmbeddable}'. + * + * This default implementation returns null so that we can easily ignore cases; + * it's useful to ignore a case when inheritance will catch all the cases anyway. + * + * @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 IType Mapping}'. + * + * This default implementation returns null so that we can easily ignore cases; + * it's useful to ignore a case when inheritance will catch all the cases anyway. + * + * @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. + * + * This default implementation returns null. + * + * @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; + +/** + * + * The Switch for the model's inheritance hierarchy. + * It supports the call {@link #doSwitch(EObject) doSwitch(object)} + * to invoke the caseXXX 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. + * + * @see org.eclipse.jpt.core.internal.content.orm.OrmPackage + * @generated + */ +public class OrmSwitch +{ + /** + * The cached model package + * + * + * @generated + */ + protected static OrmPackage modelPackage; + + /** + * Creates an instance of the switch. + * + * + * @generated + */ + public OrmSwitch() { + if (modelPackage == null) { + modelPackage = OrmPackage.eINSTANCE; + } + } + + /** + * Calls caseXXX for each class of the model until one returns a non null result; it yields that result. + * + * + * @return the first non-null result returned by a caseXXX call. + * @generated + */ + public T doSwitch(EObject theEObject) { + return doSwitch(theEObject.eClass(), theEObject); + } + + /** + * Calls caseXXX for each class of the model until one returns a non null result; it yields that result. + * + * + * @return the first non-null result returned by a caseXXX call. + * @generated + */ + protected T doSwitch(EClass theEClass, EObject theEObject) { + if (theEClass.eContainer() == modelPackage) { + return doSwitch(theEClass.getClassifierID(), theEObject); + } + else { + List eSuperTypes = theEClass.getESuperTypes(); + return eSuperTypes.isEmpty() ? defaultCase(theEObject) : doSwitch(eSuperTypes.get(0), theEObject); + } + } + + /** + * Calls caseXXX for each class of the model until one returns a non null result; it yields that result. + * + * + * @return the first non-null result returned by a caseXXX 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 'Xml EObject'. + * + * This implementation returns null; + * returning a non-null result will terminate the switch. + * + * @param object the target of the switch. + * @return the result of interpretting the object as an instance of 'Xml EObject'. + * @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 'Xml Root Content Node'. + * + * This implementation returns null; + * returning a non-null result will terminate the switch. + * + * @param object the target of the switch. + * @return the result of interpretting the object as an instance of 'Xml Root Content Node'. + * @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 'Entity Mappings Internal'. + * + * This implementation returns null; + * returning a non-null result will terminate the switch. + * + * @param object the target of the switch. + * @return the result of interpretting the object as an instance of 'Entity Mappings Internal'. + * @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 'Entity Mappings'. + * + * This implementation returns null; + * returning a non-null result will terminate the switch. + * + * @param object the target of the switch. + * @return the result of interpretting the object as an instance of 'Entity Mappings'. + * @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 'Entity Mappings For Xml'. + * + * This implementation returns null; + * returning a non-null result will terminate the switch. + * + * @param object the target of the switch. + * @return the result of interpretting the object as an instance of 'Entity Mappings For Xml'. + * @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 'Xml Type Mapping'. + * + * This implementation returns null; + * returning a non-null result will terminate the switch. + * + * @param object the target of the switch. + * @return the result of interpretting the object as an instance of 'Xml Type Mapping'. + * @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 'Xml Persistent Type'. + * + * This implementation returns null; + * returning a non-null result will terminate the switch. + * + * @param object the target of the switch. + * @return the result of interpretting the object as an instance of 'Xml Persistent Type'. + * @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 'Xml Embeddable'. + * + * This implementation returns null; + * returning a non-null result will terminate the switch. + * + * @param object the target of the switch. + * @return the result of interpretting the object as an instance of 'Xml Embeddable'. + * @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 'Xml Attribute Mapping'. + * + * This implementation returns null; + * returning a non-null result will terminate the switch. + * + * @param object the target of the switch. + * @return the result of interpretting the object as an instance of 'Xml Attribute Mapping'. + * @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 'Xml Null Attribute Mapping'. + * + * This implementation returns null; + * returning a non-null result will terminate the switch. + * + * @param object the target of the switch. + * @return the result of interpretting the object as an instance of 'Xml Null Attribute Mapping'. + * @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 'Xml Persistent Attribute'. + * + * This implementation returns null; + * returning a non-null result will terminate the switch. + * + * @param object the target of the switch. + * @return the result of interpretting the object as an instance of 'Xml Persistent Attribute'. + * @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 'Xml Basic'. + * + * This implementation returns null; + * returning a non-null result will terminate the switch. + * + * @param object the target of the switch. + * @return the result of interpretting the object as an instance of 'Xml Basic'. + * @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 'Xml Id'. + * + * This implementation returns null; + * returning a non-null result will terminate the switch. + * + * @param object the target of the switch. + * @return the result of interpretting the object as an instance of 'Xml Id'. + * @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 'Xml Transient'. + * + * This implementation returns null; + * returning a non-null result will terminate the switch. + * + * @param object the target of the switch. + * @return the result of interpretting the object as an instance of 'Xml Transient'. + * @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 'Xml Embedded'. + * + * This implementation returns null; + * returning a non-null result will terminate the switch. + * + * @param object the target of the switch. + * @return the result of interpretting the object as an instance of 'Xml Embedded'. + * @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 'Xml Embedded Id'. + * + * This implementation returns null; + * returning a non-null result will terminate the switch. + * + * @param object the target of the switch. + * @return the result of interpretting the object as an instance of 'Xml Embedded Id'. + * @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 'Xml Version'. + * + * This implementation returns null; + * returning a non-null result will terminate the switch. + * + * @param object the target of the switch. + * @return the result of interpretting the object as an instance of 'Xml Version'. + * @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 'Xml Multi Relationship Mapping Internal'. + * + * This implementation returns null; + * returning a non-null result will terminate the switch. + * + * @param object the target of the switch. + * @return the result of interpretting the object as an instance of 'Xml Multi Relationship Mapping Internal'. + * @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 'Xml Multi Relationship Mapping For Xml'. + * + * This implementation returns null; + * returning a non-null result will terminate the switch. + * + * @param object the target of the switch. + * @return the result of interpretting the object as an instance of 'Xml Multi Relationship Mapping For Xml'. + * @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 'Xml Multi Relationship Mapping'. + * + * This implementation returns null; + * returning a non-null result will terminate the switch. + * + * @param object the target of the switch. + * @return the result of interpretting the object as an instance of 'Xml Multi Relationship Mapping'. + * @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 'Xml One To Many'. + * + * This implementation returns null; + * returning a non-null result will terminate the switch. + * + * @param object the target of the switch. + * @return the result of interpretting the object as an instance of 'Xml One To Many'. + * @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 'Xml Many To Many'. + * + * This implementation returns null; + * returning a non-null result will terminate the switch. + * + * @param object the target of the switch. + * @return the result of interpretting the object as an instance of 'Xml Many To Many'. + * @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 'Persistence Unit Metadata Internal'. + * + * This implementation returns null; + * returning a non-null result will terminate the switch. + * + * @param object the target of the switch. + * @return the result of interpretting the object as an instance of 'Persistence Unit Metadata Internal'. + * @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 'Persistence Unit Metadata'. + * + * This implementation returns null; + * returning a non-null result will terminate the switch. + * + * @param object the target of the switch. + * @return the result of interpretting the object as an instance of 'Persistence Unit Metadata'. + * @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 'Persistence Unit Metadata For Xml'. + * + * This implementation returns null; + * returning a non-null result will terminate the switch. + * + * @param object the target of the switch. + * @return the result of interpretting the object as an instance of 'Persistence Unit Metadata For Xml'. + * @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 'Persistence Unit Defaults Internal'. + * + * This implementation returns null; + * returning a non-null result will terminate the switch. + * + * @param object the target of the switch. + * @return the result of interpretting the object as an instance of 'Persistence Unit Defaults Internal'. + * @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 'Persistence Unit Defaults'. + * + * This implementation returns null; + * returning a non-null result will terminate the switch. + * + * @param object the target of the switch. + * @return the result of interpretting the object as an instance of 'Persistence Unit Defaults'. + * @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 'Persistence Unit Defaults For Xml'. + * + * This implementation returns null; + * returning a non-null result will terminate the switch. + * + * @param object the target of the switch. + * @return the result of interpretting the object as an instance of 'Persistence Unit Defaults For Xml'. + * @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 'Xml Table'. + * + * This implementation returns null; + * returning a non-null result will terminate the switch. + * + * @param object the target of the switch. + * @return the result of interpretting the object as an instance of 'Xml Table'. + * @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 'Abstract Xml Named Column'. + * + * This implementation returns null; + * returning a non-null result will terminate the switch. + * + * @param object the target of the switch. + * @return the result of interpretting the object as an instance of 'Abstract Xml Named Column'. + * @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 'Abstract Xml Column'. + * + * This implementation returns null; + * returning a non-null result will terminate the switch. + * + * @param object the target of the switch. + * @return the result of interpretting the object as an instance of 'Abstract Xml Column'. + * @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 'Xml Column'. + * + * This implementation returns null; + * returning a non-null result will terminate the switch. + * + * @param object the target of the switch. + * @return the result of interpretting the object as an instance of 'Xml Column'. + * @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 'Xml Join Column'. + * + * This implementation returns null; + * returning a non-null result will terminate the switch. + * + * @param object the target of the switch. + * @return the result of interpretting the object as an instance of 'Xml Join Column'. + * @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 'IXml Column Mapping'. + * + * This implementation returns null; + * returning a non-null result will terminate the switch. + * + * @param object the target of the switch. + * @return the result of interpretting the object as an instance of 'IXml Column Mapping'. + * @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 'Xml Many To One'. + * + * This implementation returns null; + * returning a non-null result will terminate the switch. + * + * @param object the target of the switch. + * @return the result of interpretting the object as an instance of 'Xml Many To One'. + * @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 'Xml One To One'. + * + * This implementation returns null; + * returning a non-null result will terminate the switch. + * + * @param object the target of the switch. + * @return the result of interpretting the object as an instance of 'Xml One To One'. + * @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 'Xml Single Relationship Mapping'. + * + * This implementation returns null; + * returning a non-null result will terminate the switch. + * + * @param object the target of the switch. + * @return the result of interpretting the object as an instance of 'Xml Single Relationship Mapping'. + * @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 'Xml Relationship Mapping'. + * + * This implementation returns null; + * returning a non-null result will terminate the switch. + * + * @param object the target of the switch. + * @return the result of interpretting the object as an instance of 'Xml Relationship Mapping'. + * @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 'Xml Join Table'. + * + * This implementation returns null; + * returning a non-null result will terminate the switch. + * + * @param object the target of the switch. + * @return the result of interpretting the object as an instance of 'Xml Join Table'. + * @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 'Abstract Xml Table'. + * + * This implementation returns null; + * returning a non-null result will terminate the switch. + * + * @param object the target of the switch. + * @return the result of interpretting the object as an instance of 'Abstract Xml Table'. + * @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 'Xml Override'. + * + * This implementation returns null; + * returning a non-null result will terminate the switch. + * + * @param object the target of the switch. + * @return the result of interpretting the object as an instance of 'Xml Override'. + * @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 'Xml Attribute Override'. + * + * This implementation returns null; + * returning a non-null result will terminate the switch. + * + * @param object the target of the switch. + * @return the result of interpretting the object as an instance of 'Xml Attribute Override'. + * @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 'Xml Association Override'. + * + * This implementation returns null; + * returning a non-null result will terminate the switch. + * + * @param object the target of the switch. + * @return the result of interpretting the object as an instance of 'Xml Association Override'. + * @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 'Xml Discriminator Column'. + * + * This implementation returns null; + * returning a non-null result will terminate the switch. + * + * @param object the target of the switch. + * @return the result of interpretting the object as an instance of 'Xml Discriminator Column'. + * @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 'Xml Secondary Table'. + * + * This implementation returns null; + * returning a non-null result will terminate the switch. + * + * @param object the target of the switch. + * @return the result of interpretting the object as an instance of 'Xml Secondary Table'. + * @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 'Xml Primary Key Join Column'. + * + * This implementation returns null; + * returning a non-null result will terminate the switch. + * + * @param object the target of the switch. + * @return the result of interpretting the object as an instance of 'Xml Primary Key Join Column'. + * @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 'Xml Generated Value'. + * + * This implementation returns null; + * returning a non-null result will terminate the switch. + * + * @param object the target of the switch. + * @return the result of interpretting the object as an instance of 'Xml Generated Value'. + * @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 'Xml Generator'. + * + * This implementation returns null; + * returning a non-null result will terminate the switch. + * + * @param object the target of the switch. + * @return the result of interpretting the object as an instance of 'Xml Generator'. + * @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 'Xml Sequence Generator'. + * + * This implementation returns null; + * returning a non-null result will terminate the switch. + * + * @param object the target of the switch. + * @return the result of interpretting the object as an instance of 'Xml Sequence Generator'. + * @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 'Xml Table Generator'. + * + * This implementation returns null; + * returning a non-null result will terminate the switch. + * + * @param object the target of the switch. + * @return the result of interpretting the object as an instance of 'Xml Table Generator'. + * @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 'Xml Order By'. + * + * This implementation returns null; + * returning a non-null result will terminate the switch. + * + * @param object the target of the switch. + * @return the result of interpretting the object as an instance of 'Xml Order By'. + * @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 'Abstract Xml Query'. + * + * This implementation returns null; + * returning a non-null result will terminate the switch. + * + * @param object the target of the switch. + * @return the result of interpretting the object as an instance of 'Abstract Xml Query'. + * @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 'Xml Named Query'. + * + * This implementation returns null; + * returning a non-null result will terminate the switch. + * + * @param object the target of the switch. + * @return the result of interpretting the object as an instance of 'Xml Named Query'. + * @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 'Xml Named Native Query'. + * + * This implementation returns null; + * returning a non-null result will terminate the switch. + * + * @param object the target of the switch. + * @return the result of interpretting the object as an instance of 'Xml Named Native Query'. + * @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 'Xml Query Hint'. + * + * This implementation returns null; + * returning a non-null result will terminate the switch. + * + * @param object the target of the switch. + * @return the result of interpretting the object as an instance of 'Xml Query Hint'. + * @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 'IJpa EObject'. + * + * This implementation returns null; + * returning a non-null result will terminate the switch. + * + * @param object the target of the switch. + * @return the result of interpretting the object as an instance of 'IJpa EObject'. + * @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 'Jpa EObject'. + * + * This implementation returns null; + * returning a non-null result will terminate the switch. + * + * @param object the target of the switch. + * @return the result of interpretting the object as an instance of 'Jpa EObject'. + * @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 'IJpa Source Object'. + * + * This implementation returns null; + * returning a non-null result will terminate the switch. + * + * @param object the target of the switch. + * @return the result of interpretting the object as an instance of 'IJpa Source Object'. + * @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 'IXml EObject'. + * + * This implementation returns null; + * returning a non-null result will terminate the switch. + * + * @param object the target of the switch. + * @return the result of interpretting the object as an instance of 'IXml EObject'. + * @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 'IJpa Content Node'. + * + * This implementation returns null; + * returning a non-null result will terminate the switch. + * + * @param object the target of the switch. + * @return the result of interpretting the object as an instance of 'IJpa Content Node'. + * @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 'IJpa Root Content Node'. + * + * This implementation returns null; + * returning a non-null result will terminate the switch. + * + * @param object the target of the switch. + * @return the result of interpretting the object as an instance of 'IJpa Root Content Node'. + * @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 'Xml Mapped Superclass'. + * + * This implementation returns null; + * returning a non-null result will terminate the switch. + * + * @param object the target of the switch. + * @return the result of interpretting the object as an instance of 'Xml Mapped Superclass'. + * @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 'Xml Entity Internal'. + * + * This implementation returns null; + * returning a non-null result will terminate the switch. + * + * @param object the target of the switch. + * @return the result of interpretting the object as an instance of 'Xml Entity Internal'. + * @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 'Xml Entity For Xml'. + * + * This implementation returns null; + * returning a non-null result will terminate the switch. + * + * @param object the target of the switch. + * @return the result of interpretting the object as an instance of 'Xml Entity For Xml'. + * @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 'Xml Entity'. + * + * This implementation returns null; + * returning a non-null result will terminate the switch. + * + * @param object the target of the switch. + * @return the result of interpretting the object as an instance of 'Xml Entity'. + * @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 'IAttribute Mapping'. + * + * This implementation returns null; + * returning a non-null result will terminate the switch. + * + * @param object the target of the switch. + * @return the result of interpretting the object as an instance of 'IAttribute Mapping'. + * @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 'IColumn Mapping'. + * + * This implementation returns null; + * returning a non-null result will terminate the switch. + * + * @param object the target of the switch. + * @return the result of interpretting the object as an instance of 'IColumn Mapping'. + * @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 'IPersistent Attribute'. + * + * This implementation returns null; + * returning a non-null result will terminate the switch. + * + * @param object the target of the switch. + * @return the result of interpretting the object as an instance of 'IPersistent Attribute'. + * @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 'ITable'. + * + * This implementation returns null; + * returning a non-null result will terminate the switch. + * + * @param object the target of the switch. + * @return the result of interpretting the object as an instance of 'ITable'. + * @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 'INamed Column'. + * + * This implementation returns null; + * returning a non-null result will terminate the switch. + * + * @param object the target of the switch. + * @return the result of interpretting the object as an instance of 'INamed Column'. + * @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 'IAbstract Column'. + * + * This implementation returns null; + * returning a non-null result will terminate the switch. + * + * @param object the target of the switch. + * @return the result of interpretting the object as an instance of 'IAbstract Column'. + * @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 'IColumn'. + * + * This implementation returns null; + * returning a non-null result will terminate the switch. + * + * @param object the target of the switch. + * @return the result of interpretting the object as an instance of 'IColumn'. + * @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 'IAbstract Join Column'. + * + * This implementation returns null; + * returning a non-null result will terminate the switch. + * + * @param object the target of the switch. + * @return the result of interpretting the object as an instance of 'IAbstract Join Column'. + * @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 'IJoin Column'. + * + * This implementation returns null; + * returning a non-null result will terminate the switch. + * + * @param object the target of the switch. + * @return the result of interpretting the object as an instance of 'IJoin Column'. + * @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 'ISingle Relationship Mapping'. + * + * This implementation returns null; + * returning a non-null result will terminate the switch. + * + * @param object the target of the switch. + * @return the result of interpretting the object as an instance of 'ISingle Relationship Mapping'. + * @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 'IMany To One'. + * + * This implementation returns null; + * returning a non-null result will terminate the switch. + * + * @param object the target of the switch. + * @return the result of interpretting the object as an instance of 'IMany To One'. + * @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 'IOne To One'. + * + * This implementation returns null; + * returning a non-null result will terminate the switch. + * + * @param object the target of the switch. + * @return the result of interpretting the object as an instance of 'IOne To One'. + * @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 'IJoin Table'. + * + * This implementation returns null; + * returning a non-null result will terminate the switch. + * + * @param object the target of the switch. + * @return the result of interpretting the object as an instance of 'IJoin Table'. + * @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 'IOverride'. + * + * This implementation returns null; + * returning a non-null result will terminate the switch. + * + * @param object the target of the switch. + * @return the result of interpretting the object as an instance of 'IOverride'. + * @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 'IAttribute Override'. + * + * This implementation returns null; + * returning a non-null result will terminate the switch. + * + * @param object the target of the switch. + * @return the result of interpretting the object as an instance of 'IAttribute Override'. + * @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 'IAssociation Override'. + * + * This implementation returns null; + * returning a non-null result will terminate the switch. + * + * @param object the target of the switch. + * @return the result of interpretting the object as an instance of 'IAssociation Override'. + * @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 'IDiscriminator Column'. + * + * This implementation returns null; + * returning a non-null result will terminate the switch. + * + * @param object the target of the switch. + * @return the result of interpretting the object as an instance of 'IDiscriminator Column'. + * @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 'ISecondary Table'. + * + * This implementation returns null; + * returning a non-null result will terminate the switch. + * + * @param object the target of the switch. + * @return the result of interpretting the object as an instance of 'ISecondary Table'. + * @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 'IPrimary Key Join Column'. + * + * This implementation returns null; + * returning a non-null result will terminate the switch. + * + * @param object the target of the switch. + * @return the result of interpretting the object as an instance of 'IPrimary Key Join Column'. + * @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 'IGenerated Value'. + * + * This implementation returns null; + * returning a non-null result will terminate the switch. + * + * @param object the target of the switch. + * @return the result of interpretting the object as an instance of 'IGenerated Value'. + * @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 'IGenerator'. + * + * This implementation returns null; + * returning a non-null result will terminate the switch. + * + * @param object the target of the switch. + * @return the result of interpretting the object as an instance of 'IGenerator'. + * @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 'ISequence Generator'. + * + * This implementation returns null; + * returning a non-null result will terminate the switch. + * + * @param object the target of the switch. + * @return the result of interpretting the object as an instance of 'ISequence Generator'. + * @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 'ITable Generator'. + * + * This implementation returns null; + * returning a non-null result will terminate the switch. + * + * @param object the target of the switch. + * @return the result of interpretting the object as an instance of 'ITable Generator'. + * @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 'IOrder By'. + * + * This implementation returns null; + * returning a non-null result will terminate the switch. + * + * @param object the target of the switch. + * @return the result of interpretting the object as an instance of 'IOrder By'. + * @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 'IQuery'. + * + * This implementation returns null; + * returning a non-null result will terminate the switch. + * + * @param object the target of the switch. + * @return the result of interpretting the object as an instance of 'IQuery'. + * @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 'INamed Query'. + * + * This implementation returns null; + * returning a non-null result will terminate the switch. + * + * @param object the target of the switch. + * @return the result of interpretting the object as an instance of 'INamed Query'. + * @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 'INamed Native Query'. + * + * This implementation returns null; + * returning a non-null result will terminate the switch. + * + * @param object the target of the switch. + * @return the result of interpretting the object as an instance of 'INamed Native Query'. + * @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 'IQuery Hint'. + * + * This implementation returns null; + * returning a non-null result will terminate the switch. + * + * @param object the target of the switch. + * @return the result of interpretting the object as an instance of 'IQuery Hint'. + * @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 'IBasic'. + * + * This implementation returns null; + * returning a non-null result will terminate the switch. + * + * @param object the target of the switch. + * @return the result of interpretting the object as an instance of 'IBasic'. + * @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 'IId'. + * + * This implementation returns null; + * returning a non-null result will terminate the switch. + * + * @param object the target of the switch. + * @return the result of interpretting the object as an instance of 'IId'. + * @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 'ITransient'. + * + * This implementation returns null; + * returning a non-null result will terminate the switch. + * + * @param object the target of the switch. + * @return the result of interpretting the object as an instance of 'ITransient'. + * @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 'IEmbedded'. + * + * This implementation returns null; + * returning a non-null result will terminate the switch. + * + * @param object the target of the switch. + * @return the result of interpretting the object as an instance of 'IEmbedded'. + * @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 'IEmbedded Id'. + * + * This implementation returns null; + * returning a non-null result will terminate the switch. + * + * @param object the target of the switch. + * @return the result of interpretting the object as an instance of 'IEmbedded Id'. + * @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 'IVersion'. + * + * This implementation returns null; + * returning a non-null result will terminate the switch. + * + * @param object the target of the switch. + * @return the result of interpretting the object as an instance of 'IVersion'. + * @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 'IRelationship Mapping'. + * + * This implementation returns null; + * returning a non-null result will terminate the switch. + * + * @param object the target of the switch. + * @return the result of interpretting the object as an instance of 'IRelationship Mapping'. + * @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 'INon Owning Mapping'. + * + * This implementation returns null; + * returning a non-null result will terminate the switch. + * + * @param object the target of the switch. + * @return the result of interpretting the object as an instance of 'INon Owning Mapping'. + * @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 'IMulti Relationship Mapping'. + * + * This implementation returns null; + * returning a non-null result will terminate the switch. + * + * @param object the target of the switch. + * @return the result of interpretting the object as an instance of 'IMulti Relationship Mapping'. + * @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 'IOne To Many'. + * + * This implementation returns null; + * returning a non-null result will terminate the switch. + * + * @param object the target of the switch. + * @return the result of interpretting the object as an instance of 'IOne To Many'. + * @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 'IMany To Many'. + * + * This implementation returns null; + * returning a non-null result will terminate the switch. + * + * @param object the target of the switch. + * @return the result of interpretting the object as an instance of 'IMany To Many'. + * @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 'IPersistent Type'. + * + * This implementation returns null; + * returning a non-null result will terminate the switch. + * + * @param object the target of the switch. + * @return the result of interpretting the object as an instance of 'IPersistent Type'. + * @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 'IMapped Superclass'. + * + * This implementation returns null; + * returning a non-null result will terminate the switch. + * + * @param object the target of the switch. + * @return the result of interpretting the object as an instance of 'IMapped Superclass'. + * @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 'IEntity'. + * + * This implementation returns null; + * returning a non-null result will terminate the switch. + * + * @param object the target of the switch. + * @return the result of interpretting the object as an instance of 'IEntity'. + * @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 'IEmbeddable'. + * + * This implementation returns null; + * returning a non-null result will terminate the switch. + * + * @param object the target of the switch. + * @return the result of interpretting the object as an instance of 'IEmbeddable'. + * @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 'IType Mapping'. + * + * This implementation returns null; + * returning a non-null result will terminate the switch. + * + * @param object the target of the switch. + * @return the result of interpretting the object as an instance of 'IType Mapping'. + * @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 'EObject'. + * + * This implementation returns null; + * returning a non-null result will terminate the switch, but this is the last case anyway. + * + * @param object the target of the switch. + * @return the result of interpretting the object as an instance of 'EObject'. + * @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; + +/** + * + * A representation of the model object 'Java Class Ref'. + * + * + *

    + * The following features are supported: + *

      + *
    • {@link org.eclipse.jpt.core.internal.content.persistence.JavaClassRef#getJavaClass Java Class}
    • + *
    + *

    + * + * @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() Java Class}' reference. + * + * + * @see #getJavaClass() + * @generated + * @ordered + */ + protected JavaClass javaClass; + + /** + * + * + * @generated + */ + protected JavaClassRef() { + super(); + } + + /** + * + * + * @generated + */ + @Override + protected EClass eStaticClass() { + return PersistencePackage.Literals.JAVA_CLASS_REF; + } + + /** + * Returns the value of the 'Java Class' reference. + * + *

    + * If the meaning of the 'Java Class' reference isn't clear, + * there really should be more of a description here... + *

    + * + * @return the value of the 'Java Class' 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 Java Class}' reference. + * + * + * @param value the new value of the 'Java Class' 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)); + } + + /** + * + * + * @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); + } + + /** + * + * + * @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); + } + + /** + * + * + * @generated + */ + @Override + public void eUnset(int featureID) { + switch (featureID) { + case PersistencePackage.JAVA_CLASS_REF__JAVA_CLASS : + setJavaClass((JavaClass) null); + return; + } + super.eUnset(featureID); + } + + /** + * + * + * @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; + +/** + * + * A representation of the model object 'Mapping File Ref'. + * + * + *

    + * The following features are supported: + *

      + *
    • {@link org.eclipse.jpt.core.internal.content.persistence.MappingFileRef#getFileName File Name}
    • + *
    + *

    + * + * @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() File Name}' attribute. + * + * + * @see #getFileName() + * @generated + * @ordered + */ + protected static final String FILE_NAME_EDEFAULT = null; + + /** + * The cached value of the '{@link #getFileName() File Name}' attribute. + * + * + * @see #getFileName() + * @generated + * @ordered + */ + protected String fileName = FILE_NAME_EDEFAULT; + + /** + * + * + * @generated + */ + protected MappingFileRef() { + super(); + } + + /** + * + * + * @generated + */ + @Override + protected EClass eStaticClass() { + return PersistencePackage.Literals.MAPPING_FILE_REF; + } + + /** + * Returns the value of the 'File Name' attribute. + * + *

    + * If the meaning of the 'File Name' attribute isn't clear, + * there really should be more of a description here... + *

    + * + * @return the value of the 'File Name' 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 File Name}' attribute. + * + * + * @param value the new value of the 'File Name' 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)); + } + + /** + * + * + * @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); + } + + /** + * + * + * @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); + } + + /** + * + * + * @generated + */ + @Override + public void eUnset(int featureID) { + switch (featureID) { + case PersistencePackage.MAPPING_FILE_REF__FILE_NAME : + setFileName(FILE_NAME_EDEFAULT); + return; + } + super.eUnset(featureID); + } + + /** + * + * + * @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); + } + + /** + * + * + * @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; + +/** + * + * An implementation of the model object 'Persistence'. + * + * + *

    + * The following features are supported: + *

      + *
    • {@link org.eclipse.jpt.core.internal.content.persistence.Persistence#getPersistenceUnits Persistence Units}
    • + *
    • {@link org.eclipse.jpt.core.internal.content.persistence.Persistence#getVersion Version}
    • + *
    • {@link org.eclipse.jpt.core.internal.content.persistence.Persistence#getRoot Root}
    • + *
    + *

    + * + * @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() Persistence Units}' containment reference list. + * + * + * @see #getPersistenceUnits() + * @generated + * @ordered + */ + protected EList persistenceUnits; + + /** + * The default value of the '{@link #getVersion() Version}' attribute. + * + * + * @see #getVersion() + * @generated + * @ordered + */ + protected static final String VERSION_EDEFAULT = null; + + /** + * The cached value of the '{@link #getVersion() Version}' attribute. + * + * + * @see #getVersion() + * @generated + * @ordered + */ + protected String version = VERSION_EDEFAULT; + + /** + * The cached value of the '{@link #getRoot() Root}' reference. + * + * + * @see #getRoot() + * @generated + * @ordered + */ + protected PersistenceXmlRootContentNode root; + + /** + * + * + * @generated + */ + protected Persistence() { + super(); + } + + /** + * + * + * @generated + */ + @Override + protected EClass eStaticClass() { + return PersistencePackage.Literals.PERSISTENCE; + } + + /** + * Returns the value of the 'Persistence Units' containment reference list. + * The list contents are of type {@link org.eclipse.jpt.core.internal.content.persistence.PersistenceUnit}. + * + * + * @return the value of the 'Persistence Units' 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 getPersistenceUnits() { + if (persistenceUnits == null) { + persistenceUnits = new EObjectContainmentEList(PersistenceUnit.class, this, PersistencePackage.PERSISTENCE__PERSISTENCE_UNITS); + } + return persistenceUnits; + } + + /** + * Returns the value of the 'Version' attribute. + * + * + * @return the value of the 'Version' 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 Version}' attribute. + * + * + * @param value the new value of the 'Version' 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 'Root' reference. + * It is bidirectional and its opposite is '{@link org.eclipse.jpt.core.internal.content.persistence.PersistenceXmlRootContentNode#getPersistence Persistence}'. + * + *

    + * If the meaning of the 'Root' reference isn't clear, + * there really should be more of a description here... + *

    + * + * @return the value of the 'Root' 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; + } + + /** + * + * + * @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 Root}' reference. + * + * + * @param value the new value of the 'Root' 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)); + } + + /** + * + * + * @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); + } + + /** + * + * + * @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); + } + + /** + * + * + * @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); + } + + /** + * + * + * @generated + */ + @SuppressWarnings("unchecked") + @Override + public void eSet(int featureID, Object newValue) { + switch (featureID) { + case PersistencePackage.PERSISTENCE__PERSISTENCE_UNITS : + getPersistenceUnits().clear(); + getPersistenceUnits().addAll((Collection) newValue); + return; + case PersistencePackage.PERSISTENCE__VERSION : + setVersion((String) newValue); + return; + case PersistencePackage.PERSISTENCE__ROOT : + setRoot((PersistenceXmlRootContentNode) newValue); + return; + } + super.eSet(featureID, newValue); + } + + /** + * + * + * @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); + } + + /** + * + * + * @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); + } + + /** + * + * + * @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; + +/** + * + * The Factory for the model. + * It provides a create method for each non-abstract class of the model. + * + * @see org.eclipse.jpt.core.internal.content.persistence.PersistencePackage + * @generated + */ +public class PersistenceFactory extends EFactoryImpl +{ + /** + * The singleton instance of the factory. + * + * + * @generated + */ + public static final PersistenceFactory eINSTANCE = init(); + + /** + * Creates the default factory implementation. + * + * + * @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. + * + * + * @generated + */ + public PersistenceFactory() { + super(); + } + + /** + * + * + * @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"); + } + } + + /** + * + * + * @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"); + } + } + + /** + * + * + * @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"); + } + } + + /** + * + * + * @generated + */ + public Persistence createPersistence() { + Persistence persistence = new Persistence(); + return persistence; + } + + /** + * + * + * @generated + */ + public PersistenceUnit createPersistenceUnit() { + PersistenceUnit persistenceUnit = new PersistenceUnit(); + return persistenceUnit; + } + + /** + * + * + * @generated + */ + public MappingFileRef createMappingFileRef() { + MappingFileRef mappingFileRef = new MappingFileRef(); + return mappingFileRef; + } + + /** + * + * + * @generated + */ + public JavaClassRef createJavaClassRef() { + JavaClassRef javaClassRef = new JavaClassRef(); + return javaClassRef; + } + + /** + * + * + * @generated + */ + public Properties createProperties() { + Properties properties = new Properties(); + return properties; + } + + /** + * + * + * @generated + */ + public Property createProperty() { + Property property = new Property(); + return property; + } + + /** + * + * + * @generated + */ + public PersistenceXmlRootContentNode createPersistenceXmlRootContentNode() { + PersistenceXmlRootContentNode persistenceXmlRootContentNode = new PersistenceXmlRootContentNode(); + return persistenceXmlRootContentNode; + } + + /** + * + * + * @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; + } + + /** + * + * + * @generated + */ + public String convertPersistenceUnitTransactionTypeToString(EDataType eDataType, Object instanceValue) { + return instanceValue == null ? null : instanceValue.toString(); + } + + /** + * + * + * @generated + */ + public Enumerator createPersistenceUnitTransactionTypeObjectFromString(EDataType eDataType, String initialValue) { + return (Enumerator) super.createFromString(eDataType, initialValue); + } + + /** + * + * + * @generated + */ + public String convertPersistenceUnitTransactionTypeObjectToString(EDataType eDataType, Object instanceValue) { + return super.convertToString(eDataType, instanceValue); + } + + /** + * + * + * @generated + */ + public String createVersionFromString(EDataType eDataType, String initialValue) { + return (String) super.createFromString(eDataType, initialValue); + } + + /** + * + * + * @generated + */ + public String convertVersionToString(EDataType eDataType, Object instanceValue) { + return super.convertToString(eDataType, instanceValue); + } + + /** + * + * + * @generated + */ + public PersistencePackage getPersistencePackage() { + return (PersistencePackage) getEPackage(); + } + + /** + * + * + * @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; + +/** + * + * The Package for the model. + * It contains accessors for the meta objects to represent + *
      + *
    • each class,
    • + *
    • each feature of each class,
    • + *
    • each enum,
    • + *
    • and each data type
    • + *
    + * + * @see org.eclipse.jpt.core.internal.content.persistence.PersistenceFactory + * @model kind="package" + * @generated + */ +public class PersistencePackage extends EPackageImpl +{ + /** + * The package name. + * + * + * @generated + */ + public static final String eNAME = "persistence"; + + /** + * The package namespace URI. + * + * + * @generated + */ + public static final String eNS_URI = "persistence.xmi"; + + /** + * The package namespace name. + * + * + * @generated + */ + public static final String eNS_PREFIX = "org.eclipse.jpt.core.content.persistence"; + + /** + * The singleton instance of the package. + * + * + * @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 Persistence}' class. + * + * + * @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 Unit}' class. + * + * + * @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 Properties}' class. + * + * + * @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 Property}' class. + * + * + * @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 Xml Root Content Node}' class. + * + * + * @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 'Jpa File' container reference. + * + * + * @generated + * @ordered + */ + public static final int PERSISTENCE_XML_ROOT_CONTENT_NODE__JPA_FILE = JpaCorePackage.XML_EOBJECT_FEATURE_COUNT + 0; + + /** + * The feature id for the 'Persistence' reference. + * + * + * @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 'Xml Root Content Node' class. + * + * + * @generated + * @ordered + */ + public static final int PERSISTENCE_XML_ROOT_CONTENT_NODE_FEATURE_COUNT = JpaCorePackage.XML_EOBJECT_FEATURE_COUNT + 2; + + /** + * The feature id for the 'Persistence Units' containment reference list. + * + * + * @generated + * @ordered + */ + public static final int PERSISTENCE__PERSISTENCE_UNITS = JpaCorePackage.XML_EOBJECT_FEATURE_COUNT + 0; + + /** + * The feature id for the 'Version' attribute. + * + * + * @generated + * @ordered + */ + public static final int PERSISTENCE__VERSION = JpaCorePackage.XML_EOBJECT_FEATURE_COUNT + 1; + + /** + * The feature id for the 'Root' reference. + * + * + * @generated + * @ordered + */ + public static final int PERSISTENCE__ROOT = JpaCorePackage.XML_EOBJECT_FEATURE_COUNT + 2; + + /** + * The number of structural features of the 'Persistence' class. + * + * + * @generated + * @ordered + */ + public static final int PERSISTENCE_FEATURE_COUNT = JpaCorePackage.XML_EOBJECT_FEATURE_COUNT + 3; + + /** + * The feature id for the 'Description' attribute. + * + * + * @generated + * @ordered + */ + public static final int PERSISTENCE_UNIT__DESCRIPTION = JpaCorePackage.XML_EOBJECT_FEATURE_COUNT + 0; + + /** + * The feature id for the 'Provider' attribute. + * + * + * @generated + * @ordered + */ + public static final int PERSISTENCE_UNIT__PROVIDER = JpaCorePackage.XML_EOBJECT_FEATURE_COUNT + 1; + + /** + * The feature id for the 'Jta Data Source' attribute. + * + * + * @generated + * @ordered + */ + public static final int PERSISTENCE_UNIT__JTA_DATA_SOURCE = JpaCorePackage.XML_EOBJECT_FEATURE_COUNT + 2; + + /** + * The feature id for the 'Non Jta Data Source' attribute. + * + * + * @generated + * @ordered + */ + public static final int PERSISTENCE_UNIT__NON_JTA_DATA_SOURCE = JpaCorePackage.XML_EOBJECT_FEATURE_COUNT + 3; + + /** + * The feature id for the 'Mapping Files' containment reference list. + * + * + * @generated + * @ordered + */ + public static final int PERSISTENCE_UNIT__MAPPING_FILES = JpaCorePackage.XML_EOBJECT_FEATURE_COUNT + 4; + + /** + * The feature id for the 'Jar Files' attribute list. + * + * + * @generated + * @ordered + */ + public static final int PERSISTENCE_UNIT__JAR_FILES = JpaCorePackage.XML_EOBJECT_FEATURE_COUNT + 5; + + /** + * The feature id for the 'Classes' containment reference list. + * + * + * @generated + * @ordered + */ + public static final int PERSISTENCE_UNIT__CLASSES = JpaCorePackage.XML_EOBJECT_FEATURE_COUNT + 6; + + /** + * The feature id for the 'Exclude Unlisted Classes' attribute. + * + * + * @generated + * @ordered + */ + public static final int PERSISTENCE_UNIT__EXCLUDE_UNLISTED_CLASSES = JpaCorePackage.XML_EOBJECT_FEATURE_COUNT + 7; + + /** + * The feature id for the 'Properties' containment reference. + * + * + * @generated + * @ordered + */ + public static final int PERSISTENCE_UNIT__PROPERTIES = JpaCorePackage.XML_EOBJECT_FEATURE_COUNT + 8; + + /** + * The feature id for the 'Name' attribute. + * + * + * @generated + * @ordered + */ + public static final int PERSISTENCE_UNIT__NAME = JpaCorePackage.XML_EOBJECT_FEATURE_COUNT + 9; + + /** + * The feature id for the 'Transaction Type' attribute. + * + * + * @generated + * @ordered + */ + public static final int PERSISTENCE_UNIT__TRANSACTION_TYPE = JpaCorePackage.XML_EOBJECT_FEATURE_COUNT + 10; + + /** + * The number of structural features of the 'Unit' class. + * + * + * @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 Mapping File Ref}' class. + * + * + * @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 'File Name' attribute. + * + * + * @generated + * @ordered + */ + public static final int MAPPING_FILE_REF__FILE_NAME = JpaCorePackage.XML_EOBJECT_FEATURE_COUNT + 0; + + /** + * The number of structural features of the 'Mapping File Ref' class. + * + * + * @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 Java Class Ref}' class. + * + * + * @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 'Java Class' reference. + * + * + * @generated + * @ordered + */ + public static final int JAVA_CLASS_REF__JAVA_CLASS = JpaCorePackage.XML_EOBJECT_FEATURE_COUNT + 0; + + /** + * The number of structural features of the 'Java Class Ref' class. + * + * + * @generated + * @ordered + */ + public static final int JAVA_CLASS_REF_FEATURE_COUNT = JpaCorePackage.XML_EOBJECT_FEATURE_COUNT + 1; + + /** + * The feature id for the 'Properties' containment reference list. + * + * + * @generated + * @ordered + */ + public static final int PROPERTIES__PROPERTIES = JpaCorePackage.XML_EOBJECT_FEATURE_COUNT + 0; + + /** + * The number of structural features of the 'Properties' class. + * + * + * @generated + * @ordered + */ + public static final int PROPERTIES_FEATURE_COUNT = JpaCorePackage.XML_EOBJECT_FEATURE_COUNT + 1; + + /** + * The feature id for the 'Name' attribute. + * + * + * @generated + * @ordered + */ + public static final int PROPERTY__NAME = JpaCorePackage.XML_EOBJECT_FEATURE_COUNT + 0; + + /** + * The feature id for the 'Value' attribute. + * + * + * @generated + * @ordered + */ + public static final int PROPERTY__VALUE = JpaCorePackage.XML_EOBJECT_FEATURE_COUNT + 1; + + /** + * The number of structural features of the 'Property' class. + * + * + * @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 Unit Transaction Type}' enum. + * + * + * @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 'Unit Transaction Type Object' data type. + * + * + * @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 'Version' data type. + * + * + * @see java.lang.String + * @see org.eclipse.jpt.core.internal.content.persistence.PersistencePackage#getVersion() + * @generated + */ + public static final int VERSION = 9; + + /** + * + * + * @generated + */ + private EClass persistenceEClass = null; + + /** + * + * + * @generated + */ + private EClass persistenceUnitEClass = null; + + /** + * + * + * @generated + */ + private EClass mappingFileRefEClass = null; + + /** + * + * + * @generated + */ + private EClass javaClassRefEClass = null; + + /** + * + * + * @generated + */ + private EClass propertiesEClass = null; + + /** + * + * + * @generated + */ + private EClass propertyEClass = null; + + /** + * + * + * @generated + */ + private EClass persistenceXmlRootContentNodeEClass = null; + + /** + * + * + * @generated + */ + private EEnum persistenceUnitTransactionTypeEEnum = null; + + /** + * + * + * @generated + */ + private EDataType persistenceUnitTransactionTypeObjectEDataType = null; + + /** + * + * + * @generated + */ + private EDataType versionEDataType = null; + + /** + * Creates an instance of the model Package, registered with + * {@link org.eclipse.emf.ecore.EPackage.Registry EPackage.Registry} by the package + * package URI value. + *

    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. + * + * + * @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); + } + + /** + * + * + * @generated + */ + private static boolean isInited = false; + + /** + * Creates, registers, and initializes the Package 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. + *

    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. + *

    Invocation of this method will not affect any packages that have + * already been initialized. + * + * + * @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 Persistence}'. + * + * + * @return the meta object for class 'Persistence'. + * @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 Persistence Units}'. + * + * + * @return the meta object for the containment reference list 'Persistence Units'. + * @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 Version}'. + * + * + * @return the meta object for the attribute 'Version'. + * @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 Root}'. + * + * + * @return the meta object for the reference 'Root'. + * @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 Unit}'. + * + * + * @return the meta object for class 'Unit'. + * @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 Description}'. + * + * + * @return the meta object for the attribute 'Description'. + * @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 Provider}'. + * + * + * @return the meta object for the attribute 'Provider'. + * @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 Jta Data Source}'. + * + * + * @return the meta object for the attribute 'Jta Data Source'. + * @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 Non Jta Data Source}'. + * + * + * @return the meta object for the attribute 'Non Jta Data Source'. + * @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 Mapping Files}'. + * + * + * @return the meta object for the containment reference list 'Mapping Files'. + * @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 Jar Files}'. + * + * + * @return the meta object for the attribute list 'Jar Files'. + * @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 Classes}'. + * + * + * @return the meta object for the containment reference list 'Classes'. + * @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 Exclude Unlisted Classes}'. + * + * + * @return the meta object for the attribute 'Exclude Unlisted Classes'. + * @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 Properties}'. + * + * + * @return the meta object for the containment reference 'Properties'. + * @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 Name}'. + * + * + * @return the meta object for the attribute 'Name'. + * @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 Transaction Type}'. + * + * + * @return the meta object for the attribute 'Transaction Type'. + * @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 Mapping File Ref}'. + * + * + * @return the meta object for class 'Mapping File Ref'. + * @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 File Name}'. + * + * + * @return the meta object for the attribute 'File Name'. + * @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 Java Class Ref}'. + * + * + * @return the meta object for class 'Java Class Ref'. + * @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 Java Class}'. + * + * + * @return the meta object for the reference 'Java Class'. + * @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 Properties}'. + * + * + * @return the meta object for class 'Properties'. + * @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 Properties}'. + * + * + * @return the meta object for the containment reference list 'Properties'. + * @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 Property}'. + * + * + * @return the meta object for class 'Property'. + * @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 Name}'. + * + * + * @return the meta object for the attribute 'Name'. + * @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 Value}'. + * + * + * @return the meta object for the attribute 'Value'. + * @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 Xml Root Content Node}'. + * + * + * @return the meta object for class 'Xml Root Content Node'. + * @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 Persistence}'. + * + * + * @return the meta object for the reference 'Persistence'. + * @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 Unit Transaction Type}'. + * + * + * @return the meta object for enum 'Unit Transaction Type'. + * @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 Unit Transaction Type Object}'. + * + * + * @return the meta object for data type 'Unit Transaction Type Object'. + * @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 Version}'. + * + * + * @return the meta object for data type 'Version'. + * @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. + * + * + * @return the factory that creates the instances of the model. + * @generated + */ + public PersistenceFactory getPersistenceFactory() { + return (PersistenceFactory) getEFactoryInstance(); + } + + /** + * + * + * @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. + * + * + * @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); + } + + /** + * + * + * @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. + * + * + * @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); + } + /** + * + * Defines literals for the meta objects that represent + *

      + *
    • each class,
    • + *
    • each feature of each class,
    • + *
    • each enum,
    • + *
    • and each data type
    • + *
    + * + * @generated + */ + public interface Literals + { + /** + * The meta object literal for the '{@link org.eclipse.jpt.core.internal.content.persistence.Persistence Persistence}' class. + * + * + * @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 'Persistence Units' containment reference list feature. + * + * + * @generated + */ + public static final EReference PERSISTENCE__PERSISTENCE_UNITS = eINSTANCE.getPersistence_PersistenceUnits(); + + /** + * The meta object literal for the 'Version' attribute feature. + * + * + * @generated + */ + public static final EAttribute PERSISTENCE__VERSION = eINSTANCE.getPersistence_Version(); + + /** + * The meta object literal for the 'Root' reference feature. + * + * + * @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 Unit}' class. + * + * + * @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 'Description' attribute feature. + * + * + * @generated + */ + public static final EAttribute PERSISTENCE_UNIT__DESCRIPTION = eINSTANCE.getPersistenceUnit_Description(); + + /** + * The meta object literal for the 'Provider' attribute feature. + * + * + * @generated + */ + public static final EAttribute PERSISTENCE_UNIT__PROVIDER = eINSTANCE.getPersistenceUnit_Provider(); + + /** + * The meta object literal for the 'Jta Data Source' attribute feature. + * + * + * @generated + */ + public static final EAttribute PERSISTENCE_UNIT__JTA_DATA_SOURCE = eINSTANCE.getPersistenceUnit_JtaDataSource(); + + /** + * The meta object literal for the 'Non Jta Data Source' attribute feature. + * + * + * @generated + */ + public static final EAttribute PERSISTENCE_UNIT__NON_JTA_DATA_SOURCE = eINSTANCE.getPersistenceUnit_NonJtaDataSource(); + + /** + * The meta object literal for the 'Mapping Files' containment reference list feature. + * + * + * @generated + */ + public static final EReference PERSISTENCE_UNIT__MAPPING_FILES = eINSTANCE.getPersistenceUnit_MappingFiles(); + + /** + * The meta object literal for the 'Jar Files' attribute list feature. + * + * + * @generated + */ + public static final EAttribute PERSISTENCE_UNIT__JAR_FILES = eINSTANCE.getPersistenceUnit_JarFiles(); + + /** + * The meta object literal for the 'Classes' containment reference list feature. + * + * + * @generated + */ + public static final EReference PERSISTENCE_UNIT__CLASSES = eINSTANCE.getPersistenceUnit_Classes(); + + /** + * The meta object literal for the 'Exclude Unlisted Classes' attribute feature. + * + * + * @generated + */ + public static final EAttribute PERSISTENCE_UNIT__EXCLUDE_UNLISTED_CLASSES = eINSTANCE.getPersistenceUnit_ExcludeUnlistedClasses(); + + /** + * The meta object literal for the 'Properties' containment reference feature. + * + * + * @generated + */ + public static final EReference PERSISTENCE_UNIT__PROPERTIES = eINSTANCE.getPersistenceUnit_Properties(); + + /** + * The meta object literal for the 'Name' attribute feature. + * + * + * @generated + */ + public static final EAttribute PERSISTENCE_UNIT__NAME = eINSTANCE.getPersistenceUnit_Name(); + + /** + * The meta object literal for the 'Transaction Type' attribute feature. + * + * + * @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 Mapping File Ref}' class. + * + * + * @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 'File Name' attribute feature. + * + * + * @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 Java Class Ref}' class. + * + * + * @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 'Java Class' reference feature. + * + * + * @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 Properties}' class. + * + * + * @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 'Properties' containment reference list feature. + * + * + * @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 Property}' class. + * + * + * @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 'Name' attribute feature. + * + * + * @generated + */ + public static final EAttribute PROPERTY__NAME = eINSTANCE.getProperty_Name(); + + /** + * The meta object literal for the 'Value' attribute feature. + * + * + * @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 Xml Root Content Node}' class. + * + * + * @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 'Persistence' reference feature. + * + * + * @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 Unit Transaction Type}' enum. + * + * + * @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 'Unit Transaction Type Object' data type. + * + * + * @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 'Version' data type. + * + * + * @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; + +/** + * + * An implementation of the model object 'Persistence Unit'. + * + * + *

    + * The following features are supported: + *

      + *
    • {@link org.eclipse.jpt.core.internal.content.persistence.PersistenceUnit#getDescription Description}
    • + *
    • {@link org.eclipse.jpt.core.internal.content.persistence.PersistenceUnit#getProvider Provider}
    • + *
    • {@link org.eclipse.jpt.core.internal.content.persistence.PersistenceUnit#getJtaDataSource Jta Data Source}
    • + *
    • {@link org.eclipse.jpt.core.internal.content.persistence.PersistenceUnit#getNonJtaDataSource Non Jta Data Source}
    • + *
    • {@link org.eclipse.jpt.core.internal.content.persistence.PersistenceUnit#getMappingFiles Mapping Files}
    • + *
    • {@link org.eclipse.jpt.core.internal.content.persistence.PersistenceUnit#getJarFiles Jar Files}
    • + *
    • {@link org.eclipse.jpt.core.internal.content.persistence.PersistenceUnit#getClasses Classes}
    • + *
    • {@link org.eclipse.jpt.core.internal.content.persistence.PersistenceUnit#isExcludeUnlistedClasses Exclude Unlisted Classes}
    • + *
    • {@link org.eclipse.jpt.core.internal.content.persistence.PersistenceUnit#getProperties Properties}
    • + *
    • {@link org.eclipse.jpt.core.internal.content.persistence.PersistenceUnit#getName Name}
    • + *
    • {@link org.eclipse.jpt.core.internal.content.persistence.PersistenceUnit#getTransactionType Transaction Type}
    • + *
    + *

    + * + * @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() Description}' attribute. + * + * + * @see #getDescription() + * @generated + * @ordered + */ + protected static final String DESCRIPTION_EDEFAULT = null; + + /** + * The cached value of the '{@link #getDescription() Description}' attribute. + * + * + * @see #getDescription() + * @generated + * @ordered + */ + protected String description = DESCRIPTION_EDEFAULT; + + /** + * The default value of the '{@link #getProvider() Provider}' attribute. + * + * + * @see #getProvider() + * @generated + * @ordered + */ + protected static final String PROVIDER_EDEFAULT = null; + + /** + * The cached value of the '{@link #getProvider() Provider}' attribute. + * + * + * @see #getProvider() + * @generated + * @ordered + */ + protected String provider = PROVIDER_EDEFAULT; + + /** + * The default value of the '{@link #getJtaDataSource() Jta Data Source}' attribute. + * + * + * @see #getJtaDataSource() + * @generated + * @ordered + */ + protected static final String JTA_DATA_SOURCE_EDEFAULT = null; + + /** + * The cached value of the '{@link #getJtaDataSource() Jta Data Source}' attribute. + * + * + * @see #getJtaDataSource() + * @generated + * @ordered + */ + protected String jtaDataSource = JTA_DATA_SOURCE_EDEFAULT; + + /** + * The default value of the '{@link #getNonJtaDataSource() Non Jta Data Source}' attribute. + * + * + * @see #getNonJtaDataSource() + * @generated + * @ordered + */ + protected static final String NON_JTA_DATA_SOURCE_EDEFAULT = null; + + /** + * The cached value of the '{@link #getNonJtaDataSource() Non Jta Data Source}' attribute. + * + * + * @see #getNonJtaDataSource() + * @generated + * @ordered + */ + protected String nonJtaDataSource = NON_JTA_DATA_SOURCE_EDEFAULT; + + /** + * The cached value of the '{@link #getMappingFiles() Mapping Files}' containment reference list. + * + * + * @see #getMappingFiles() + * @generated + * @ordered + */ + protected EList mappingFiles; + + /** + * The cached value of the '{@link #getJarFiles() Jar Files}' attribute list. + * + * + * @see #getJarFiles() + * @generated + * @ordered + */ + protected EList jarFiles; + + /** + * The cached value of the '{@link #getClasses() Classes}' containment reference list. + * + * + * @see #getClasses() + * @generated + * @ordered + */ + protected EList classes; + + /** + * The default value of the '{@link #isExcludeUnlistedClasses() Exclude Unlisted Classes}' attribute. + * + * + * @see #isExcludeUnlistedClasses() + * @generated + * @ordered + */ + protected static final boolean EXCLUDE_UNLISTED_CLASSES_EDEFAULT = false; + + /** + * The cached value of the '{@link #isExcludeUnlistedClasses() Exclude Unlisted Classes}' attribute. + * + * + * @see #isExcludeUnlistedClasses() + * @generated + * @ordered + */ + protected boolean excludeUnlistedClasses = EXCLUDE_UNLISTED_CLASSES_EDEFAULT; + + /** + * This is true if the Exclude Unlisted Classes attribute has been set. + * + * + * @generated + * @ordered + */ + protected boolean excludeUnlistedClassesESet; + + /** + * The cached value of the '{@link #getProperties() Properties}' containment reference. + * + * + * @see #getProperties() + * @generated + * @ordered + */ + protected Properties properties; + + /** + * The default value of the '{@link #getName() Name}' attribute. + * + * + * @see #getName() + * @generated + * @ordered + */ + protected static final String NAME_EDEFAULT = null; + + /** + * The cached value of the '{@link #getName() Name}' attribute. + * + * + * @see #getName() + * @generated + * @ordered + */ + protected String name = NAME_EDEFAULT; + + /** + * The default value of the '{@link #getTransactionType() Transaction Type}' attribute. + * + * + * @see #getTransactionType() + * @generated + * @ordered + */ + protected static final PersistenceUnitTransactionType TRANSACTION_TYPE_EDEFAULT = PersistenceUnitTransactionType.JTA; + + /** + * The cached value of the '{@link #getTransactionType() Transaction Type}' attribute. + * + * + * @see #getTransactionType() + * @generated + * @ordered + */ + protected PersistenceUnitTransactionType transactionType = TRANSACTION_TYPE_EDEFAULT; + + /** + * This is true if the Transaction Type attribute has been set. + * + * + * @generated + * @ordered + */ + protected boolean transactionTypeESet; + + /** + * + * + * @generated + */ + protected PersistenceUnit() { + super(); + } + + /** + * + * + * @generated + */ + @Override + protected EClass eStaticClass() { + return PersistencePackage.Literals.PERSISTENCE_UNIT; + } + + /** + * Returns the value of the 'Description' attribute. + * + * + * @return the value of the 'Description' 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 Description}' attribute. + * + * + * @param value the new value of the 'Description' 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 'Provider' attribute. + * + * + * @return the value of the 'Provider' 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 Provider}' attribute. + * + * + * @param value the new value of the 'Provider' 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 'Jta Data Source' attribute. + * + * + * @return the value of the 'Jta Data Source' 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 Jta Data Source}' attribute. + * + * + * @param value the new value of the 'Jta Data Source' 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 'Non Jta Data Source' attribute. + * + * + * @return the value of the 'Non Jta Data Source' 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 Non Jta Data Source}' attribute. + * + * + * @param value the new value of the 'Non Jta Data Source' 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 'Mapping Files' containment reference list. + * The list contents are of type {@link org.eclipse.jpt.core.internal.content.persistence.MappingFileRef}. + * + * + * @return the value of the 'Mapping Files' 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 getMappingFiles() { + if (mappingFiles == null) { + mappingFiles = new EObjectContainmentEList(MappingFileRef.class, this, PersistencePackage.PERSISTENCE_UNIT__MAPPING_FILES); + } + return mappingFiles; + } + + /** + * Returns the value of the 'Jar Files' attribute list. + * The list contents are of type {@link java.lang.String}. + * + * + * @return the value of the 'Jar Files' 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 getJarFiles() { + if (jarFiles == null) { + jarFiles = new EDataTypeEList(String.class, this, PersistencePackage.PERSISTENCE_UNIT__JAR_FILES); + } + return jarFiles; + } + + /** + * Returns the value of the 'Classes' containment reference list. + * The list contents are of type {@link org.eclipse.jpt.core.internal.content.persistence.JavaClassRef}. + * + * + * @return the value of the 'Classes' 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 getClasses() { + if (classes == null) { + classes = new EObjectContainmentEList(JavaClassRef.class, this, PersistencePackage.PERSISTENCE_UNIT__CLASSES); + } + return classes; + } + + /** + * Returns the value of the 'Exclude Unlisted Classes' attribute. + * The default value is "false". + * + * + * @return the value of the 'Exclude Unlisted Classes' 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 Exclude Unlisted Classes}' attribute. + * + * + * @param value the new value of the 'Exclude Unlisted Classes' 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 Exclude Unlisted Classes}' attribute. + * + * + * @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 Exclude Unlisted Classes}' attribute is set. + * + * + * @return whether the value of the 'Exclude Unlisted Classes' attribute is set. + * @see #unsetExcludeUnlistedClasses() + * @see #isExcludeUnlistedClasses() + * @see #setExcludeUnlistedClasses(boolean) + * @generated + */ + public boolean isSetExcludeUnlistedClasses() { + return excludeUnlistedClassesESet; + } + + /** + * Returns the value of the 'Properties' containment reference. + * + * + * @return the value of the 'Properties' 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; + } + + /** + * + * + * @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 Properties}' containment reference. + * + * + * @param value the new value of the 'Properties' 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 'Name' attribute. + * + * + * @return the value of the 'Name' 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 Name}' attribute. + * + * + * @param value the new value of the 'Name' 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 'Transaction Type' attribute. + * The default value is "JTA". + * The literals are from the enumeration {@link org.eclipse.jpt.core.internal.content.persistence.PersistenceUnitTransactionType}. + * + * + * @return the value of the 'Transaction Type' 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 Transaction Type}' attribute. + * + * + * @param value the new value of the 'Transaction Type' 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 Transaction Type}' attribute. + * + * + * @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 Transaction Type}' attribute is set. + * + * + * @return whether the value of the 'Transaction Type' attribute is set. + * @see #unsetTransactionType() + * @see #getTransactionType() + * @see #setTransactionType(PersistenceUnitTransactionType) + * @generated + */ + public boolean isSetTransactionType() { + return transactionTypeESet; + } + + /** + * + * + * @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); + } + + /** + * + * + * @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); + } + + /** + * + * + * @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) newValue); + return; + case PersistencePackage.PERSISTENCE_UNIT__JAR_FILES : + getJarFiles().clear(); + getJarFiles().addAll((Collection) newValue); + return; + case PersistencePackage.PERSISTENCE_UNIT__CLASSES : + getClasses().clear(); + getClasses().addAll((Collection) 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); + } + + /** + * + * + * @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); + } + + /** + * + * + * @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(); + } + + /** + * + * + * @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(""); + result.append(", name: "); + result.append(name); + result.append(", transactionType: "); + if (transactionTypeESet) + result.append(transactionType); + else + result.append(""); + 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; + +/** + * + * A representation of the literals of the enumeration 'Persistence Unit Transaction Type', + * and utility methods for working with them. + * + * @see org.eclipse.jpt.core.internal.content.persistence.PersistencePackage#getPersistenceUnitTransactionType() + * @model + * @generated + */ +public enum PersistenceUnitTransactionType implements Enumerator { + /** + * The 'JTA' literal object. + * + * + * @see #JTA_VALUE + * @generated + * @ordered + */ + JTA(0, "JTA", "JTA"), + /** + * The 'RESOURCE LOCAL' literal object. + * + * + * @see #RESOURCE_LOCAL_VALUE + * @generated + * @ordered + */ + RESOURCE_LOCAL(1, "RESOURCE_LOCAL", "RESOURCE_LOCAL"); + /** + * The 'JTA' literal value. + * + *

    + * If the meaning of 'JTA' literal object isn't clear, + * there really should be more of a description here... + *

    + * + * @see #JTA + * @model + * @generated + * @ordered + */ + public static final int JTA_VALUE = 0; + + /** + * The 'RESOURCE LOCAL' literal value. + * + *

    + * If the meaning of 'RESOURCE LOCAL' literal object isn't clear, + * there really should be more of a description here... + *

    + * + * @see #RESOURCE_LOCAL + * @model + * @generated + * @ordered + */ + public static final int RESOURCE_LOCAL_VALUE = 1; + + /** + * An array of all the 'Unit Transaction Type' enumerators. + * + * + * @generated + */ + private static final PersistenceUnitTransactionType[] VALUES_ARRAY = new PersistenceUnitTransactionType[] { + JTA, RESOURCE_LOCAL, + }; + + /** + * A public read-only list of all the 'Unit Transaction Type' enumerators. + * + * + * @generated + */ + public static final List VALUES = Collections.unmodifiableList(Arrays.asList(VALUES_ARRAY)); + + /** + * Returns the 'Unit Transaction Type' literal with the specified literal value. + * + * + * @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 'Unit Transaction Type' literal with the specified name. + * + * + * @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 'Unit Transaction Type' literal with the specified integer value. + * + * + * @generated + */ + public static PersistenceUnitTransactionType get(int value) { + switch (value) { + case JTA_VALUE : + return JTA; + case RESOURCE_LOCAL_VALUE : + return RESOURCE_LOCAL; + } + return null; + } + + /** + * + * + * @generated + */ + private final int value; + + /** + * + * + * @generated + */ + private final String name; + + /** + * + * + * @generated + */ + private final String literal; + + /** + * Only this class can construct instances. + * + * + * @generated + */ + private PersistenceUnitTransactionType(int value, String name, String literal) { + this.value = value; + this.name = name; + this.literal = literal; + } + + /** + * + * + * @generated + */ + public int getValue() { + return value; + } + + /** + * + * + * @generated + */ + public String getName() { + return name; + } + + /** + * + * + * @generated + */ + public String getLiteral() { + return literal; + } + + /** + * Returns the literal value of the enumerator, which is its string representation. + * + * + * @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; + +/** + * + * A representation of the model object 'Persistence Xml Root Content Node'. + * + * + *

    + * The following features are supported: + *

      + *
    • {@link org.eclipse.jpt.core.internal.content.persistence.PersistenceXmlRootContentNode#getPersistence Persistence}
    • + *
    + *

    + * + * @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() Persistence}' reference. + * + * + * @see #getPersistence() + * @generated + * @ordered + */ + protected Persistence persistence; + + /** + * + * + * @generated + */ + protected PersistenceXmlRootContentNode() { + super(); + } + + /** + * + * + * @generated + */ + @Override + protected EClass eStaticClass() { + return PersistencePackage.Literals.PERSISTENCE_XML_ROOT_CONTENT_NODE; + } + + /** + * Returns the value of the 'Jpa File' container reference. + * The default value is "". + * It is bidirectional and its opposite is '{@link org.eclipse.jpt.core.internal.JpaFile#getContent Content}'. + * + *

    + * If the meaning of the 'Jpa File' container reference isn't clear, + * there really should be more of a description here... + *

    + * + * @return the value of the 'Jpa File' 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 'Persistence' reference. + * It is bidirectional and its opposite is '{@link org.eclipse.jpt.core.internal.content.persistence.Persistence#getRoot Root}'. + * + *

    + * If the meaning of the 'Persistence' reference isn't clear, + * there really should be more of a description here... + *

    + * + * @return the value of the 'Persistence' 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; + } + + /** + * + * + * @generated + */ + public Persistence basicGetPersistence() { + return persistence; + } + + /** + * + * + * @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 Persistence}' reference. + * + * + * @param value the new value of the 'Persistence' 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)); + } + + /** + * + * + * @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); + } + + /** + * + * + * @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); + } + + /** + * + * + * @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); + } + + /** + * + * + * @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); + } + + /** + * + * + * @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); + } + + /** + * + * + * @generated + */ + @Override + public void eUnset(int featureID) { + switch (featureID) { + case PersistencePackage.PERSISTENCE_XML_ROOT_CONTENT_NODE__PERSISTENCE : + setPersistence((Persistence) null); + return; + } + super.eUnset(featureID); + } + + /** + * + * + * @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); + } + + /** + * + * + * @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); + } + + /** + * + * + * @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; + +/** + * + * An implementation of the model object 'Properties'. + * + * + *

    + * The following features are supported: + *

      + *
    • {@link org.eclipse.jpt.core.internal.content.persistence.Properties#getProperties Properties}
    • + *
    + *

    + * + * @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() Properties}' containment reference list. + * + * + * @see #getProperties() + * @generated + * @ordered + */ + protected EList properties; + + /** + * + * + * @generated + */ + protected Properties() { + super(); + } + + /** + * + * + * @generated + */ + @Override + protected EClass eStaticClass() { + return PersistencePackage.Literals.PROPERTIES; + } + + /** + * Returns the value of the 'Properties' containment reference list. + * The list contents are of type {@link org.eclipse.jpt.core.internal.content.persistence.Property}. + * + * + * @return the value of the 'Properties' 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 getProperties() { + if (properties == null) { + properties = new EObjectContainmentEList(Property.class, this, PersistencePackage.PROPERTIES__PROPERTIES); + } + return properties; + } + + /** + * + * + * @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); + } + + /** + * + * + * @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); + } + + /** + * + * + * @generated + */ + @SuppressWarnings("unchecked") + @Override + public void eSet(int featureID, Object newValue) { + switch (featureID) { + case PersistencePackage.PROPERTIES__PROPERTIES : + getProperties().clear(); + getProperties().addAll((Collection) newValue); + return; + } + super.eSet(featureID, newValue); + } + + /** + * + * + * @generated + */ + @Override + public void eUnset(int featureID) { + switch (featureID) { + case PersistencePackage.PROPERTIES__PROPERTIES : + getProperties().clear(); + return; + } + super.eUnset(featureID); + } + + /** + * + * + * @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; + +/** + * + * An implementation of the model object 'Property'. + * + * + *

    + * The following features are supported: + *

      + *
    • {@link org.eclipse.jpt.core.internal.content.persistence.Property#getName Name}
    • + *
    • {@link org.eclipse.jpt.core.internal.content.persistence.Property#getValue Value}
    • + *
    + *

    + * + * @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() Name}' attribute. + * + * + * @see #getName() + * @generated + * @ordered + */ + protected static final String NAME_EDEFAULT = null; + + /** + * The cached value of the '{@link #getName() Name}' attribute. + * + * + * @see #getName() + * @generated + * @ordered + */ + protected String name = NAME_EDEFAULT; + + /** + * The default value of the '{@link #getValue() Value}' attribute. + * + * + * @see #getValue() + * @generated + * @ordered + */ + protected static final String VALUE_EDEFAULT = null; + + /** + * The cached value of the '{@link #getValue() Value}' attribute. + * + * + * @see #getValue() + * @generated + * @ordered + */ + protected String value = VALUE_EDEFAULT; + + /** + * + * + * @generated + */ + protected Property() { + super(); + } + + /** + * + * + * @generated + */ + @Override + protected EClass eStaticClass() { + return PersistencePackage.Literals.PROPERTY; + } + + /** + * Returns the value of the 'Name' attribute. + * + * + * @return the value of the 'Name' 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 Name}' attribute. + * + * + * @param value the new value of the 'Name' 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 'Value' attribute. + * + * + * @return the value of the 'Value' 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 Value}' attribute. + * + * + * @param value the new value of the 'Value' 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)); + } + + /** + * + * + * @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); + } + + /** + * + * + * @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); + } + + /** + * + * + * @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); + } + + /** + * + * + * @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); + } + + /** + * + * + * @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; + +/** + * + * The Adapter Factory for the model. + * It provides an adapter createXXX method for each class of the model. + * + * @see org.eclipse.jpt.core.internal.content.persistence.PersistencePackage + * @generated + */ +public class PersistenceAdapterFactory extends AdapterFactoryImpl +{ + /** + * The cached model package. + * + * + * @generated + */ + protected static PersistencePackage modelPackage; + + /** + * Creates an instance of the adapter factory. + * + * + * @generated + */ + public PersistenceAdapterFactory() { + if (modelPackage == null) { + modelPackage = PersistencePackage.eINSTANCE; + } + } + + /** + * Returns whether this factory is applicable for the type of the object. + * + * This implementation returns true if the object is either the model's package or is an instance object of the model. + * + * @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 createXXX methods. + * + * + * @generated + */ + protected PersistenceSwitch modelSwitch = new PersistenceSwitch() { + @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 target. + * + * + * @param target the object to adapt. + * @return the adapter for the target. + * @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 Persistence}'. + * + * This default implementation returns null so that we can easily ignore cases; + * it's useful to ignore a case when inheritance will catch all the cases anyway. + * + * @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 Unit}'. + * + * This default implementation returns null so that we can easily ignore cases; + * it's useful to ignore a case when inheritance will catch all the cases anyway. + * + * @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 Mapping File Ref}'. + * + * This default implementation returns null so that we can easily ignore cases; + * it's useful to ignore a case when inheritance will catch all the cases anyway. + * + * @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 Java Class Ref}'. + * + * This default implementation returns null so that we can easily ignore cases; + * it's useful to ignore a case when inheritance will catch all the cases anyway. + * + * @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 Properties}'. + * + * This default implementation returns null so that we can easily ignore cases; + * it's useful to ignore a case when inheritance will catch all the cases anyway. + * + * @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 Property}'. + * + * This default implementation returns null so that we can easily ignore cases; + * it's useful to ignore a case when inheritance will catch all the cases anyway. + * + * @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 IJpa EObject}'. + * + * This default implementation returns null so that we can easily ignore cases; + * it's useful to ignore a case when inheritance will catch all the cases anyway. + * + * @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 Jpa EObject}'. + * + * This default implementation returns null so that we can easily ignore cases; + * it's useful to ignore a case when inheritance will catch all the cases anyway. + * + * @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 IJpa Source Object}'. + * + * This default implementation returns null so that we can easily ignore cases; + * it's useful to ignore a case when inheritance will catch all the cases anyway. + * + * @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 IXml EObject}'. + * + * This default implementation returns null so that we can easily ignore cases; + * it's useful to ignore a case when inheritance will catch all the cases anyway. + * + * @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 Xml Root Content Node}'. + * + * This default implementation returns null so that we can easily ignore cases; + * it's useful to ignore a case when inheritance will catch all the cases anyway. + * + * @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 Xml EObject}'. + * + * This default implementation returns null so that we can easily ignore cases; + * it's useful to ignore a case when inheritance will catch all the cases anyway. + * + * @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 IJpa Content Node}'. + * + * This default implementation returns null so that we can easily ignore cases; + * it's useful to ignore a case when inheritance will catch all the cases anyway. + * + * @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 IJpa Root Content Node}'. + * + * This default implementation returns null so that we can easily ignore cases; + * it's useful to ignore a case when inheritance will catch all the cases anyway. + * + * @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. + * + * This default implementation returns null. + * + * @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; + +/** + * + * The Switch for the model's inheritance hierarchy. + * It supports the call {@link #doSwitch(EObject) doSwitch(object)} + * to invoke the caseXXX 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. + * + * @see org.eclipse.jpt.core.internal.content.persistence.PersistencePackage + * @generated + */ +public class PersistenceSwitch +{ + /** + * The cached model package + * + * + * @generated + */ + protected static PersistencePackage modelPackage; + + /** + * Creates an instance of the switch. + * + * + * @generated + */ + public PersistenceSwitch() { + if (modelPackage == null) { + modelPackage = PersistencePackage.eINSTANCE; + } + } + + /** + * Calls caseXXX for each class of the model until one returns a non null result; it yields that result. + * + * + * @return the first non-null result returned by a caseXXX call. + * @generated + */ + public T doSwitch(EObject theEObject) { + return doSwitch(theEObject.eClass(), theEObject); + } + + /** + * Calls caseXXX for each class of the model until one returns a non null result; it yields that result. + * + * + * @return the first non-null result returned by a caseXXX call. + * @generated + */ + protected T doSwitch(EClass theEClass, EObject theEObject) { + if (theEClass.eContainer() == modelPackage) { + return doSwitch(theEClass.getClassifierID(), theEObject); + } + else { + List eSuperTypes = theEClass.getESuperTypes(); + return eSuperTypes.isEmpty() ? defaultCase(theEObject) : doSwitch(eSuperTypes.get(0), theEObject); + } + } + + /** + * Calls caseXXX for each class of the model until one returns a non null result; it yields that result. + * + * + * @return the first non-null result returned by a caseXXX 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 'Persistence'. + * + * This implementation returns null; + * returning a non-null result will terminate the switch. + * + * @param object the target of the switch. + * @return the result of interpretting the object as an instance of 'Persistence'. + * @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 'Unit'. + * + * This implementation returns null; + * returning a non-null result will terminate the switch. + * + * @param object the target of the switch. + * @return the result of interpretting the object as an instance of 'Unit'. + * @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 'Mapping File Ref'. + * + * This implementation returns null; + * returning a non-null result will terminate the switch. + * + * @param object the target of the switch. + * @return the result of interpretting the object as an instance of 'Mapping File Ref'. + * @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 'Java Class Ref'. + * + * This implementation returns null; + * returning a non-null result will terminate the switch. + * + * @param object the target of the switch. + * @return the result of interpretting the object as an instance of 'Java Class Ref'. + * @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 'Properties'. + * + * This implementation returns null; + * returning a non-null result will terminate the switch. + * + * @param object the target of the switch. + * @return the result of interpretting the object as an instance of 'Properties'. + * @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 'Property'. + * + * This implementation returns null; + * returning a non-null result will terminate the switch. + * + * @param object the target of the switch. + * @return the result of interpretting the object as an instance of 'Property'. + * @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 'IJpa EObject'. + * + * This implementation returns null; + * returning a non-null result will terminate the switch. + * + * @param object the target of the switch. + * @return the result of interpretting the object as an instance of 'IJpa EObject'. + * @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 'Jpa EObject'. + * + * This implementation returns null; + * returning a non-null result will terminate the switch. + * + * @param object the target of the switch. + * @return the result of interpretting the object as an instance of 'Jpa EObject'. + * @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 'IJpa Source Object'. + * + * This implementation returns null; + * returning a non-null result will terminate the switch. + * + * @param object the target of the switch. + * @return the result of interpretting the object as an instance of 'IJpa Source Object'. + * @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 'IXml EObject'. + * + * This implementation returns null; + * returning a non-null result will terminate the switch. + * + * @param object the target of the switch. + * @return the result of interpretting the object as an instance of 'IXml EObject'. + * @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 'Xml Root Content Node'. + * + * This implementation returns null; + * returning a non-null result will terminate the switch. + * + * @param object the target of the switch. + * @return the result of interpretting the object as an instance of 'Xml Root Content Node'. + * @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 'Xml EObject'. + * + * This implementation returns null; + * returning a non-null result will terminate the switch. + * + * @param object the target of the switch. + * @return the result of interpretting the object as an instance of 'Xml EObject'. + * @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 'IJpa Content Node'. + * + * This implementation returns null; + * returning a non-null result will terminate the switch. + * + * @param object the target of the switch. + * @return the result of interpretting the object as an instance of 'IJpa Content Node'. + * @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 'IJpa Root Content Node'. + * + * This implementation returns null; + * returning a non-null result will terminate the switch. + * + * @param object the target of the switch. + * @return the result of interpretting the object as an instance of 'IJpa Root Content Node'. + * @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 'EObject'. + * + * This implementation returns null; + * returning a non-null result will terminate the switch, but this is the last case anyway. + * + * @param object the target of the switch. + * @return the result of interpretting the object as an instance of 'EObject'. + * @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 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. + *
    +	 * @Outer(name="Fred", foo=@Inner) => @Outer(name="Fred")
    +	 * @Outer(foo=@Inner) => @Outer
    +	 * 
    + */ + 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 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 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: + *
    +	 *     @Outer(@Inner)
    +	 * 
    + * or + *
    +	 *     @Outer(foo=@Inner)
    +	 * 
    + */ + protected void buildNewOuterAnnotation(ModifiedDeclaration declaration, Annotation inner) { + if (this.elementName.equals("value")) { + this.outerAnnotationAdapter.newSingleMemberAnnotation(declaration).setValue(this.buildNewInnerExpression(inner)); + } else { + List 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: + *
    +	 *     @Outer("lorem ipsum") => @Outer(value="lorem ipsum", foo=@Inner)
    +	 * 
    + */ + 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 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: + *
    +	 *     @Outer(bar="lorem ipsum") => @Outer(bar="lorem ipsum", foo=@Inner)
    +	 * 
    + * or + *
    +	 *     @Outer(foo=@Inner("lorem ipsum")) => @Outer(foo=@Inner)
    +	 * 
    + */ + protected void modifyAnnotation(ModifiedDeclaration declaration, NormalAnnotation outer, Annotation inner) { + MemberValuePair pair = this.memberValuePair(outer); + if (pair == null) { + List 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 persistableFields = new ArrayList(); + 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 persistableMethods = new ArrayList(); + 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. + *
    + *     @Inner("zero")
    + *     private int id;
    + * 
    + * + * or is embedded in an element array within another annotation, e.g. + *
    + *     @Outer(foo={@Inner("zero"), @Inner("one"), @Inner("two")})
    + *     private int id;
    + *     
    + *         annotationName = "Inner"
    + *         containerAnnotationName = "Outer"
    + *         elementName = "foo"
    + *         index = 0-2
    + * 
    + * + * 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. + *
    + * 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: + *
    + *     @Foo(bar=@Outer(...))
    + *     private int id;
    + * 
    + *     @Foo(bar=@Inner(...))  // not allowed
    + *     private int id;
    + * 
    + * + * NB: Behavior is undefined when both the stand-alone and the nested + * configurations annotate the same declaration, e.g. + *
    + *     // undefined behavior
    + *     @Inner("zero")
    + *     @Outer(foo={@Inner("zero"), @Inner("one"), @Inner("two")})
    + *     private int id;
    + * 
    + */ +public class CombinationIndexedDeclarationAnnotationAdapter + implements IndexedDeclarationAnnotationAdapter +{ + + /** + * this adapter is used when the annotation is "stand-alone": + *
    +	 *     @Inner("zero")
    +	 * 
    + * and is only used when the index is 0 or 1 + */ + private final SimpleDeclarationAnnotationAdapter standAloneAnnotationAdapter; + + /** + * this adapter is used when the annotation is "nested": + *
    +	 *     @Outer(foo={@Inner("zero"), @Inner("one")})
    +	 * 
    + */ + 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" + *
    +	 *     @Inner("zero")
    +	 *     @Outer({@Inner("zero"), @Inner("one")})
    +	 * 
    + */ + 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); + } + + /** + *
    +	 * [none] => @Inner
    +	 *     or
    +	 * @Inner("lorem ipsum") => @Inner
    +	 *     or
    +	 * @Inner(text="lorem ipsum") => @Inner
    +	 *     or
    +	 * @Outer(foo={@Inner, @Inner}) => @Outer(foo={@Inner, @Inner, @Inner})
    +	 *     or
    +	 * @Outer(foo=@Inner) => @Outer(foo={@Inner, @Inner})
    +	 *     or
    +	 * @Inner => @Outer(foo={@Inner, @Inner})
    +	 *     etc.
    +	 * 
    + */ + 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 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: + *
    +	 *     @Outer(foo={@Inner("zero"), @Inner("one")}) =>
    +	 *     @Outer(foo=@Inner("zero")) =>
    +	 *     @Inner("zero")
    +	 * 
    + */ + 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 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 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 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 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 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 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 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 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 annotations() { + return new FilteringIterator(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 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 modifiers = this.modifiers(); + for (ListIterator 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 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 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 modifiers = this.modifiers(); + for (ListIterator 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 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 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 imports(CompilationUnit astRoot) { + return astRoot.imports(); + } + + protected boolean importsInclude(List 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 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 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 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 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 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. + *
    + *     @Outer(foo=@Inner)
    + *     private int id;
    + *         outerAnnotationAdapter = AnnotationAdapter<@Outer>
    + *         elementName = "foo"
    + *         annotationName = "Inner"
    + * 
    + */ +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; + } + + /** + *
    +	 * @Outer("lorem ipsum") => @Outer(@Inner)
    +	 * 
    + */ + @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. + *
    + *     @Outer(foo={@Inner("zero"), @Inner("one"), @Inner("two")})
    + *     private int id;
    + *         outerAnnotationAdapter = AnnotationAdapter<@Outer>
    + *         elementName = "foo"
    + *         index = 0-2
    + *         annotationName = "Inner"
    + * 
    + */ +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); + } + + /** + *
    +	 * @Outer({@Inner(0), @Inner(1)}) => @Outer({@Inner(0), @Inner(1), @Inner(2)})
    +	 *     or
    +	 * @Outer("lorem ipsum") => @Outer(@Inner(0))
    +	 *     or
    +	 * @Outer(@Inner(0)) => @Outer({@Inner(0), @Inner(1)})
    +	 * 
    + */ + @Override + protected void modifyAnnotationValue(SingleMemberAnnotation outer, Annotation inner) { + this.modifyExpression(outer, SINGLE_MEMBER_ANNOTATION_EXPRESSION_PROVIDER, inner); + } + + /** + *
    +	 * @Outer(text="lorem ipsum") => @Outer(text="lorem ipsum", foo=@Inner(0))
    +	 *     or
    +	 * @Outer(foo={@Inner(0), @Inner(1)}) => @Outer(foo={@Inner(0), @Inner(1), @Inner(2)})
    +	 *     or
    +	 * @Outer(foo="lorem ipsum") => @Outer(foo=@Inner(0))
    +	 *     or
    +	 * @Outer(foo=@NotInner) => @Outer(foo=@Inner(0))
    +	 *     or
    +	 * @Outer(foo=@Inner(0)) => @Outer(foo={@Inner(0), @Inner(1)})
    +	 * 
    + */ + @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 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 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 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 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. + *
    +	 *     @Foo(xxx={"abc"}) => @Foo(xxx="abc")
    +	 * or
    +	 *     @Foo({"abc"}) => @Foo("abc")
    +	 * 
    + */ + 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 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 expressions = this.expressions(ai); + expressions.add((Expression) ASTNode.copySubtree(value.getAST(), value)); + this.addInnerToExpressions(inner, expressions); + expProvider.setExpression(node, ai); + } + } + } + + @SuppressWarnings("unchecked") + protected List 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. + *
    + *     @Foo
    + *     private int id;
    + * 
    + * + * 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 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; + +/** + * + * A representation of the literals of the enumeration 'Default Eager Fetch Type', + * and utility methods for working with them. + * + * @see org.eclipse.jpt.core.internal.mappings.JpaCoreMappingsPackage#getDefaultEagerFetchType() + * @model + * @generated + */ +public enum DefaultEagerFetchType implements Enumerator { + /** + * The 'Default' literal object. + * + * + * @see #DEFAULT_VALUE + * @generated + * @ordered + */ + DEFAULT(0, "Default", "Default (Eager)"), /** + * The 'EAGER' literal object. + * + * + * @see #EAGER_VALUE + * @generated + * @ordered + */ + EAGER(1, "EAGER", "Eager"), /** + * The 'LAZY' literal object. + * + * + * @see #LAZY_VALUE + * @generated + * @ordered + */ + LAZY(2, "LAZY", "Lazy"); + /** + * The 'Default' literal value. + * + *

    + * If the meaning of 'Default' literal object isn't clear, + * there really should be more of a description here... + *

    + * + * @see #DEFAULT + * @model name="Default" literal="Default (Eager)" + * @generated + * @ordered + */ + public static final int DEFAULT_VALUE = 0; + + /** + * The 'EAGER' literal value. + * + *

    + * If the meaning of 'EAGER' literal object isn't clear, + * there really should be more of a description here... + *

    + * + * @see #EAGER + * @model literal="Eager" + * @generated + * @ordered + */ + public static final int EAGER_VALUE = 1; + + /** + * The 'LAZY' literal value. + * + *

    + * If the meaning of 'LAZY' literal object isn't clear, + * there really should be more of a description here... + *

    + * + * @see #LAZY + * @model literal="Lazy" + * @generated + * @ordered + */ + public static final int LAZY_VALUE = 2; + + /** + * An array of all the 'Default Eager Fetch Type' enumerators. + * + * + * @generated + */ + private static final DefaultEagerFetchType[] VALUES_ARRAY = new DefaultEagerFetchType[] { + DEFAULT, EAGER, LAZY, + }; + + /** + * A public read-only list of all the 'Default Eager Fetch Type' enumerators. + * + * + * @generated + */ + public static final List VALUES = Collections.unmodifiableList(Arrays.asList(VALUES_ARRAY)); + + /** + * Returns the 'Default Eager Fetch Type' literal with the specified literal value. + * + * + * @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 'Default Eager Fetch Type' literal with the specified name. + * + * + * @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 'Default Eager Fetch Type' literal with the specified integer value. + * + * + * @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; + } + + /** + * + * + * @generated + */ + private final int value; + + /** + * + * + * @generated + */ + private final String name; + + /** + * + * + * @generated + */ + private final String literal; + + /** + * Only this class can construct instances. + * + * + * @generated + */ + private DefaultEagerFetchType(int value, String name, String literal) { + this.value = value; + this.name = name; + this.literal = literal; + } + + /** + * + * + * @generated + */ + public int getValue() { + return value; + } + + /** + * + * + * @generated + */ + public String getName() { + return name; + } + + /** + * + * + * @generated + */ + public String getLiteral() { + return literal; + } + + /** + * Returns the literal value of the enumerator, which is its string representation. + * + * + * @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; + +/** + * + * A representation of the literals of the enumeration 'Default False Boolean', + * and utility methods for working with them. + * + * @see org.eclipse.jpt.core.internal.mappings.JpaCoreMappingsPackage#getDefaultFalseBoolean() + * @model + * @generated + */ +public enum DefaultFalseBoolean implements Enumerator { + /** + * The 'Default' literal object. + * + * + * @see #DEFAULT_VALUE + * @generated + * @ordered + */ + DEFAULT(0, "Default", "Default (False)"), /** + * The 'False' literal object. + * + * + * @see #FALSE_VALUE + * @generated + * @ordered + */ + FALSE(1, "false", "False"), /** + * The 'True' literal object. + * + * + * @see #TRUE_VALUE + * @generated + * @ordered + */ + TRUE(2, "true", "True"); + /** + * The 'Default' literal value. + * + *

    + * If the meaning of 'Default' literal object isn't clear, + * there really should be more of a description here... + *

    + * + * @see #DEFAULT + * @model name="Default" literal="Default (False)" + * @generated + * @ordered + */ + public static final int DEFAULT_VALUE = 0; + + /** + * The 'False' literal value. + * + *

    + * If the meaning of 'False' literal object isn't clear, + * there really should be more of a description here... + *

    + * + * @see #FALSE + * @model name="false" literal="False" + * @generated + * @ordered + */ + public static final int FALSE_VALUE = 1; + + /** + * The 'True' literal value. + * + *

    + * If the meaning of 'True' literal object isn't clear, + * there really should be more of a description here... + *

    + * + * @see #TRUE + * @model name="true" literal="True" + * @generated + * @ordered + */ + public static final int TRUE_VALUE = 2; + + /** + * An array of all the 'Default False Boolean' enumerators. + * + * + * @generated + */ + private static final DefaultFalseBoolean[] VALUES_ARRAY = new DefaultFalseBoolean[] { + DEFAULT, FALSE, TRUE, + }; + + /** + * A public read-only list of all the 'Default False Boolean' enumerators. + * + * + * @generated + */ + public static final List VALUES = Collections.unmodifiableList(Arrays.asList(VALUES_ARRAY)); + + /** + * Returns the 'Default False Boolean' literal with the specified literal value. + * + * + * @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 'Default False Boolean' literal with the specified name. + * + * + * @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 'Default False Boolean' literal with the specified integer value. + * + * + * @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; + } + + /** + * + * + * @generated + */ + private final int value; + + /** + * + * + * @generated + */ + private final String name; + + /** + * + * + * @generated + */ + private final String literal; + + /** + * Only this class can construct instances. + * + * + * @generated + */ + private DefaultFalseBoolean(int value, String name, String literal) { + this.value = value; + this.name = name; + this.literal = literal; + } + + /** + * + * + * @generated + */ + public int getValue() { + return value; + } + + /** + * + * + * @generated + */ + public String getName() { + return name; + } + + /** + * + * + * @generated + */ + public String getLiteral() { + return literal; + } + + /** + * Returns the literal value of the enumerator, which is its string representation. + * + * + * @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; + +/** + * + * A representation of the literals of the enumeration 'Default Lazy Fetch Type', + * and utility methods for working with them. + * + * @see org.eclipse.jpt.core.internal.mappings.JpaCoreMappingsPackage#getDefaultLazyFetchType() + * @model + * @generated + */ +public enum DefaultLazyFetchType implements Enumerator { + /** + * The 'Default' literal object. + * + * + * @see #DEFAULT_VALUE + * @generated + * @ordered + */ + DEFAULT(0, "Default", "Default (Lazy)"), /** + * The 'LAZY' literal object. + * + * + * @see #LAZY_VALUE + * @generated + * @ordered + */ + LAZY(1, "LAZY", "Lazy"), /** + * The 'EAGER' literal object. + * + * + * @see #EAGER_VALUE + * @generated + * @ordered + */ + EAGER(2, "EAGER", "Eager"); + /** + * The 'Default' literal value. + * + *

    + * If the meaning of 'Default' literal object isn't clear, + * there really should be more of a description here... + *

    + * + * @see #DEFAULT + * @model name="Default" literal="Default (Lazy)" + * @generated + * @ordered + */ + public static final int DEFAULT_VALUE = 0; + + /** + * The 'LAZY' literal value. + * + *

    + * If the meaning of 'LAZY' literal object isn't clear, + * there really should be more of a description here... + *

    + * + * @see #LAZY + * @model literal="Lazy" + * @generated + * @ordered + */ + public static final int LAZY_VALUE = 1; + + /** + * The 'EAGER' literal value. + * + *

    + * If the meaning of 'EAGER' literal object isn't clear, + * there really should be more of a description here... + *

    + * + * @see #EAGER + * @model literal="Eager" + * @generated + * @ordered + */ + public static final int EAGER_VALUE = 2; + + /** + * An array of all the 'Default Lazy Fetch Type' enumerators. + * + * + * @generated + */ + private static final DefaultLazyFetchType[] VALUES_ARRAY = new DefaultLazyFetchType[] { + DEFAULT, LAZY, EAGER, + }; + + /** + * A public read-only list of all the 'Default Lazy Fetch Type' enumerators. + * + * + * @generated + */ + public static final List VALUES = Collections.unmodifiableList(Arrays.asList(VALUES_ARRAY)); + + /** + * Returns the 'Default Lazy Fetch Type' literal with the specified literal value. + * + * + * @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 'Default Lazy Fetch Type' literal with the specified name. + * + * + * @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 'Default Lazy Fetch Type' literal with the specified integer value. + * + * + * @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; + } + + /** + * + * + * @generated + */ + private final int value; + + /** + * + * + * @generated + */ + private final String name; + + /** + * + * + * @generated + */ + private final String literal; + + /** + * Only this class can construct instances. + * + * + * @generated + */ + private DefaultLazyFetchType(int value, String name, String literal) { + this.value = value; + this.name = name; + this.literal = literal; + } + + /** + * + * + * @generated + */ + public int getValue() { + return value; + } + + /** + * + * + * @generated + */ + public String getName() { + return name; + } + + /** + * + * + * @generated + */ + public String getLiteral() { + return literal; + } + + /** + * Returns the literal value of the enumerator, which is its string representation. + * + * + * @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; + +/** + * + * A representation of the literals of the enumeration 'Default True Boolean', + * and utility methods for working with them. + * + * @see org.eclipse.jpt.core.internal.mappings.JpaCoreMappingsPackage#getDefaultTrueBoolean() + * @model + * @generated + */ +public enum DefaultTrueBoolean implements Enumerator { + /** + * The 'Default' literal object. + * + * + * @see #DEFAULT_VALUE + * @generated + * @ordered + */ + DEFAULT(0, "Default", "Default (False)"), /** + * The 'True' literal object. + * + * + * @see #TRUE_VALUE + * @generated + * @ordered + */ + TRUE(1, "true", "True"), /** + * The 'False' literal object. + * + * + * @see #FALSE_VALUE + * @generated + * @ordered + */ + FALSE(2, "false", "False"); + /** + * The 'Default' literal value. + * + *

    + * If the meaning of 'Default' literal object isn't clear, + * there really should be more of a description here... + *

    + * + * @see #DEFAULT + * @model name="Default" literal="Default (False)" + * @generated + * @ordered + */ + public static final int DEFAULT_VALUE = 0; + + /** + * The 'True' literal value. + * + *

    + * If the meaning of 'True' literal object isn't clear, + * there really should be more of a description here... + *

    + * + * @see #TRUE + * @model name="true" literal="True" + * @generated + * @ordered + */ + public static final int TRUE_VALUE = 1; + + /** + * The 'False' literal value. + * + *

    + * If the meaning of 'False' literal object isn't clear, + * there really should be more of a description here... + *

    + * + * @see #FALSE + * @model name="false" literal="False" + * @generated + * @ordered + */ + public static final int FALSE_VALUE = 2; + + /** + * An array of all the 'Default True Boolean' enumerators. + * + * + * @generated + */ + private static final DefaultTrueBoolean[] VALUES_ARRAY = new DefaultTrueBoolean[] { + DEFAULT, TRUE, FALSE, + }; + + /** + * A public read-only list of all the 'Default True Boolean' enumerators. + * + * + * @generated + */ + public static final List VALUES = Collections.unmodifiableList(Arrays.asList(VALUES_ARRAY)); + + /** + * Returns the 'Default True Boolean' literal with the specified literal value. + * + * + * @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 'Default True Boolean' literal with the specified name. + * + * + * @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 'Default True Boolean' literal with the specified integer value. + * + * + * @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; + } + + /** + * + * + * @generated + */ + private final int value; + + /** + * + * + * @generated + */ + private final String name; + + /** + * + * + * @generated + */ + private final String literal; + + /** + * Only this class can construct instances. + * + * + * @generated + */ + private DefaultTrueBoolean(int value, String name, String literal) { + this.value = value; + this.name = name; + this.literal = literal; + } + + /** + * + * + * @generated + */ + public int getValue() { + return value; + } + + /** + * + * + * @generated + */ + public String getName() { + return name; + } + + /** + * + * + * @generated + */ + public String getLiteral() { + return literal; + } + + /** + * Returns the literal value of the enumerator, which is its string representation. + * + * + * @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; + +/** + * + * A representation of the literals of the enumeration 'Discriminator Type', + * and utility methods for working with them. + * + * @see org.eclipse.jpt.core.internal.mappings.JpaCoreMappingsPackage#getDiscriminatorType() + * @model + * @generated + */ +public enum DiscriminatorType implements Enumerator { + /** + * The 'Default' literal object. + * + * + * @see #DEFAULT_VALUE + * @generated + * @ordered + */ + DEFAULT(0, "Default", "Default (String)"), + /** + * The 'STRING' literal object. + * + * + * @see #STRING_VALUE + * @generated + * @ordered + */ + STRING(1, "STRING", "String"), + /** + * The 'CHAR' literal object. + * + * + * @see #CHAR_VALUE + * @generated + * @ordered + */ + CHAR(2, "CHAR", "Char"), + /** + * The 'INTEGER' literal object. + * + * + * @see #INTEGER_VALUE + * @generated + * @ordered + */ + INTEGER(3, "INTEGER", "Integer"); + /** + * The 'Default' literal value. + * + *

    + * If the meaning of 'Default' literal object isn't clear, + * there really should be more of a description here... + *

    + * + * @see #DEFAULT + * @model name="Default" literal="Default (String)" + * @generated + * @ordered + */ + public static final int DEFAULT_VALUE = 0; + + /** + * The 'STRING' literal value. + * + *

    + * If the meaning of 'String' literal object isn't clear, + * there really should be more of a description here... + *

    + * + * @see #STRING + * @model literal="String" + * @generated + * @ordered + */ + public static final int STRING_VALUE = 1; + + /** + * The 'CHAR' literal value. + * + *

    + * If the meaning of 'Char' literal object isn't clear, + * there really should be more of a description here... + *

    + * + * @see #CHAR + * @model literal="Char" + * @generated + * @ordered + */ + public static final int CHAR_VALUE = 2; + + /** + * The 'INTEGER' literal value. + * + *

    + * If the meaning of 'Integer' literal object isn't clear, + * there really should be more of a description here... + *

    + * + * @see #INTEGER + * @model literal="Integer" + * @generated + * @ordered + */ + public static final int INTEGER_VALUE = 3; + + /** + * An array of all the 'Discriminator Type' enumerators. + * + * + * @generated + */ + private static final DiscriminatorType[] VALUES_ARRAY = new DiscriminatorType[] { + DEFAULT, STRING, CHAR, INTEGER, + }; + + /** + * A public read-only list of all the 'Discriminator Type' enumerators. + * + * + * @generated + */ + public static final List VALUES = Collections.unmodifiableList(Arrays.asList(VALUES_ARRAY)); + + /** + * Returns the 'Discriminator Type' literal with the specified literal value. + * + * + * @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 'Discriminator Type' literal with the specified name. + * + * + * @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 'Discriminator Type' literal with the specified integer value. + * + * + * @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; + } + + /** + * + * + * @generated + */ + private final int value; + + /** + * + * + * @generated + */ + private final String name; + + /** + * + * + * @generated + */ + private final String literal; + + /** + * Only this class can construct instances. + * + * + * @generated + */ + private DiscriminatorType(int value, String name, String literal) { + this.value = value; + this.name = name; + this.literal = literal; + } + + /** + * + * + * @generated + */ + public int getValue() { + return value; + } + + /** + * + * + * @generated + */ + public String getName() { + return name; + } + + /** + * + * + * @generated + */ + public String getLiteral() { + return literal; + } + + /** + * Returns the literal value of the enumerator, which is its string representation. + * + * + * @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; + +/** + * + * A representation of the literals of the enumeration 'Enum Type', + * and utility methods for working with them. + * + * @see org.eclipse.jpt.core.internal.mappings.JpaCoreMappingsPackage#getEnumType() + * @model + * @generated + */ +public enum EnumType implements Enumerator { + /** + * The 'Default' literal object. + * + * + * @see #DEFAULT_VALUE + * @generated + * @ordered + */ + DEFAULT(0, "Default", "Default (Ordinal)"), /** + * The 'ORDINAL' literal object. + * + * + * @see #ORDINAL_VALUE + * @generated + * @ordered + */ + ORDINAL(1, "ORDINAL", "Ordinal"), + /** + * The 'STRING' literal object. + * + * + * @see #STRING_VALUE + * @generated + * @ordered + */ + STRING(2, "STRING", "String"); + /** + * The 'Default' literal value. + * + *

    + * If the meaning of 'Default' literal object isn't clear, + * there really should be more of a description here... + *

    + * + * @see #DEFAULT + * @model name="Default" literal="Default (Ordinal)" + * @generated + * @ordered + */ + public static final int DEFAULT_VALUE = 0; + + /** + * The 'ORDINAL' literal value. + * + *

    + * If the meaning of 'ORDINAL' literal object isn't clear, + * there really should be more of a description here... + *

    + * + * @see #ORDINAL + * @model literal="Ordinal" + * @generated + * @ordered + */ + public static final int ORDINAL_VALUE = 1; + + /** + * The 'STRING' literal value. + * + *

    + * If the meaning of 'STRING' literal object isn't clear, + * there really should be more of a description here... + *

    + * + * @see #STRING + * @model literal="String" + * @generated + * @ordered + */ + public static final int STRING_VALUE = 2; + + /** + * An array of all the 'Enum Type' enumerators. + * + * + * @generated + */ + private static final EnumType[] VALUES_ARRAY = new EnumType[] { + DEFAULT, ORDINAL, STRING, + }; + + /** + * A public read-only list of all the 'Enum Type' enumerators. + * + * + * @generated + */ + public static final List VALUES = Collections.unmodifiableList(Arrays.asList(VALUES_ARRAY)); + + /** + * Returns the 'Enum Type' literal with the specified literal value. + * + * + * @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 'Enum Type' literal with the specified name. + * + * + * @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 'Enum Type' literal with the specified integer value. + * + * + * @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; + } + + /** + * + * + * @generated + */ + private final int value; + + /** + * + * + * @generated + */ + private final String name; + + /** + * + * + * @generated + */ + private final String literal; + + /** + * Only this class can construct instances. + * + * + * @generated + */ + private EnumType(int value, String name, String literal) { + this.value = value; + this.name = name; + this.literal = literal; + } + + /** + * + * + * @generated + */ + public int getValue() { + return value; + } + + /** + * + * + * @generated + */ + public String getName() { + return name; + } + + /** + * + * + * @generated + */ + public String getLiteral() { + return literal; + } + + /** + * Returns the literal value of the enumerator, which is its string representation. + * + * + * @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; + +/** + * + * A representation of the literals of the enumeration 'Generation Type', + * and utility methods for working with them. + * + * @see org.eclipse.jpt.core.internal.mappings.JpaCoreMappingsPackage#getGenerationType() + * @model + * @generated + */ +public enum GenerationType implements Enumerator { + /** + * The 'Default' literal object. + * + * + * @see #DEFAULT_VALUE + * @generated + * @ordered + */ + DEFAULT(0, "Default", "Default (Auto)"), + /** + * The 'Auto' literal object. + * + * + * @see #AUTO_VALUE + * @generated + * @ordered + */ + AUTO(1, "Auto", "Auto"), + /** + * The 'Identity' literal object. + * + * + * @see #IDENTITY_VALUE + * @generated + * @ordered + */ + IDENTITY(2, "Identity", "Identity"), + /** + * The 'Sequence' literal object. + * + * + * @see #SEQUENCE_VALUE + * @generated + * @ordered + */ + SEQUENCE(3, "Sequence", "Sequence"), + /** + * The 'Table' literal object. + * + * + * @see #TABLE_VALUE + * @generated + * @ordered + */ + TABLE(4, "Table", "Table"); + /** + * The 'Default' literal value. + * + *

    + * If the meaning of 'Default' literal object isn't clear, + * there really should be more of a description here... + *

    + * + * @see #DEFAULT + * @model name="Default" literal="Default (Auto)" + * @generated + * @ordered + */ + public static final int DEFAULT_VALUE = 0; + + /** + * The 'Auto' literal value. + * + *

    + * If the meaning of 'Auto' literal object isn't clear, + * there really should be more of a description here... + *

    + * + * @see #AUTO + * @model name="Auto" + * @generated + * @ordered + */ + public static final int AUTO_VALUE = 1; + + /** + * The 'Identity' literal value. + * + *

    + * If the meaning of 'Identity' literal object isn't clear, + * there really should be more of a description here... + *

    + * + * @see #IDENTITY + * @model name="Identity" + * @generated + * @ordered + */ + public static final int IDENTITY_VALUE = 2; + + /** + * The 'Sequence' literal value. + * + *

    + * If the meaning of 'Sequence' literal object isn't clear, + * there really should be more of a description here... + *

    + * + * @see #SEQUENCE + * @model name="Sequence" + * @generated + * @ordered + */ + public static final int SEQUENCE_VALUE = 3; + + /** + * The 'Table' literal value. + * + *

    + * If the meaning of 'Table' literal object isn't clear, + * there really should be more of a description here... + *

    + * + * @see #TABLE + * @model name="Table" + * @generated + * @ordered + */ + public static final int TABLE_VALUE = 4; + + /** + * An array of all the 'Generation Type' enumerators. + * + * + * @generated + */ + private static final GenerationType[] VALUES_ARRAY = new GenerationType[] { + DEFAULT, AUTO, IDENTITY, SEQUENCE, TABLE, + }; + + /** + * A public read-only list of all the 'Generation Type' enumerators. + * + * + * @generated + */ + public static final List VALUES = Collections.unmodifiableList(Arrays.asList(VALUES_ARRAY)); + + /** + * Returns the 'Generation Type' literal with the specified literal value. + * + * + * @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 'Generation Type' literal with the specified name. + * + * + * @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 'Generation Type' literal with the specified integer value. + * + * + * @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; + } + + /** + * + * + * @generated + */ + private final int value; + + /** + * + * + * @generated + */ + private final String name; + + /** + * + * + * @generated + */ + private final String literal; + + /** + * Only this class can construct instances. + * + * + * @generated + */ + private GenerationType(int value, String name, String literal) { + this.value = value; + this.name = name; + this.literal = literal; + } + + /** + * + * + * @generated + */ + public int getValue() { + return value; + } + + /** + * + * + * @generated + */ + public String getName() { + return name; + } + + /** + * + * + * @generated + */ + public String getLiteral() { + return literal; + } + + /** + * Returns the literal value of the enumerator, which is its string representation. + * + * + * @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 @@ +/** + * + * + * + * $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; + +/** + * + * A representation of the model object 'IAbstract Column'. + * + * + *

    + * The following features are supported: + *

      + *
    • {@link org.eclipse.jpt.core.internal.mappings.IAbstractColumn#getUnique Unique}
    • + *
    • {@link org.eclipse.jpt.core.internal.mappings.IAbstractColumn#getNullable Nullable}
    • + *
    • {@link org.eclipse.jpt.core.internal.mappings.IAbstractColumn#getInsertable Insertable}
    • + *
    • {@link org.eclipse.jpt.core.internal.mappings.IAbstractColumn#getUpdatable Updatable}
    • + *
    • {@link org.eclipse.jpt.core.internal.mappings.IAbstractColumn#getTable Table}
    • + *
    • {@link org.eclipse.jpt.core.internal.mappings.IAbstractColumn#getSpecifiedTable Specified Table}
    • + *
    • {@link org.eclipse.jpt.core.internal.mappings.IAbstractColumn#getDefaultTable Default Table}
    • + *
    + *

    + * + * @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 'Unique' attribute. + * The literals are from the enumeration {@link org.eclipse.jpt.core.internal.mappings.DefaultFalseBoolean}. + * + *

    + * If the meaning of the 'Unique' attribute isn't clear, + * there really should be more of a description here... + *

    + * + * @return the value of the 'Unique' 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 Unique}' attribute. + * + * + * @param value the new value of the 'Unique' attribute. + * @see org.eclipse.jpt.core.internal.mappings.DefaultFalseBoolean + * @see #getUnique() + * @generated + */ + void setUnique(DefaultFalseBoolean value); + + /** + * Returns the value of the 'Nullable' attribute. + * The literals are from the enumeration {@link org.eclipse.jpt.core.internal.mappings.DefaultTrueBoolean}. + * + *

    + * If the meaning of the 'Nullable' attribute isn't clear, + * there really should be more of a description here... + *

    + * + * @return the value of the 'Nullable' 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 Nullable}' attribute. + * + * + * @param value the new value of the 'Nullable' attribute. + * @see org.eclipse.jpt.core.internal.mappings.DefaultTrueBoolean + * @see #getNullable() + * @generated + */ + void setNullable(DefaultTrueBoolean value); + + /** + * Returns the value of the 'Insertable' attribute. + * The literals are from the enumeration {@link org.eclipse.jpt.core.internal.mappings.DefaultTrueBoolean}. + * + *

    + * If the meaning of the 'Insertable' attribute isn't clear, + * there really should be more of a description here... + *

    + * + * @return the value of the 'Insertable' 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 Insertable}' attribute. + * + * + * @param value the new value of the 'Insertable' attribute. + * @see org.eclipse.jpt.core.internal.mappings.DefaultTrueBoolean + * @see #getInsertable() + * @generated + */ + void setInsertable(DefaultTrueBoolean value); + + /** + * Returns the value of the 'Updatable' attribute. + * The literals are from the enumeration {@link org.eclipse.jpt.core.internal.mappings.DefaultTrueBoolean}. + * + *

    + * If the meaning of the 'Updatable' attribute isn't clear, + * there really should be more of a description here... + *

    + * + * @return the value of the 'Updatable' 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 Updatable}' attribute. + * + * + * @param value the new value of the 'Updatable' attribute. + * @see org.eclipse.jpt.core.internal.mappings.DefaultTrueBoolean + * @see #getUpdatable() + * @generated + */ + void setUpdatable(DefaultTrueBoolean value); + + /** + * Returns the value of the 'Table' attribute. + * + *

    + * If the meaning of the 'Table' attribute isn't clear, + * there really should be more of a description here... + *

    + * + * @return the value of the 'Table' 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 'Specified Table' attribute. + * + *

    + * If the meaning of the 'Specified Table' attribute isn't clear, + * there really should be more of a description here... + *

    + * + * @return the value of the 'Specified Table' 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 Specified Table}' attribute. + * + * + * @param value the new value of the 'Specified Table' attribute. + * @see #getSpecifiedTable() + * @generated + */ + void setSpecifiedTable(String value); + + /** + * Returns the value of the 'Default Table' attribute. + * + *

    + * If the meaning of the 'Default Table' attribute isn't clear, + * there really should be more of a description here... + *

    + * + * @return the value of the 'Default Table' 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 @@ +/** + * + * + * + * $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; + +/** + * + * A representation of the model object 'IAbstract Join Column'. + * + * + *

    + * The following features are supported: + *

      + *
    • {@link org.eclipse.jpt.core.internal.mappings.IAbstractJoinColumn#getReferencedColumnName Referenced Column Name}
    • + *
    • {@link org.eclipse.jpt.core.internal.mappings.IAbstractJoinColumn#getSpecifiedReferencedColumnName Specified Referenced Column Name}
    • + *
    • {@link org.eclipse.jpt.core.internal.mappings.IAbstractJoinColumn#getDefaultReferencedColumnName Default Referenced Column Name}
    • + *
    + *

    + * + * @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 'Referenced Column Name' attribute. + * + *

    + * If the meaning of the 'Referenced Column Name' attribute isn't clear, + * there really should be more of a description here... + *

    + * + * @return the value of the 'Referenced Column Name' 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 'Specified Referenced Column Name' attribute. + * + *

    + * If the meaning of the 'Specified Referenced Column Name' attribute isn't clear, + * there really should be more of a description here... + *

    + * + * @return the value of the 'Specified Referenced Column Name' 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 Specified Referenced Column Name}' attribute. + * + * + * @param value the new value of the 'Specified Referenced Column Name' attribute. + * @see #getSpecifiedReferencedColumnName() + * @generated + */ + void setSpecifiedReferencedColumnName(String value); + + /** + * Returns the value of the 'Default Referenced Column Name' attribute. + * + *

    + * If the meaning of the 'Default Referenced Column Name' attribute isn't clear, + * there really should be more of a description here... + *

    + * + * @return the value of the 'Default Referenced Column Name' 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; + +/** + * + * A representation of the model object 'IAssociation Override'. + * + * + *

    + * The following features are supported: + *

      + *
    • {@link org.eclipse.jpt.core.internal.mappings.IAssociationOverride#getJoinColumns Join Columns}
    • + *
    • {@link org.eclipse.jpt.core.internal.mappings.IAssociationOverride#getSpecifiedJoinColumns Specified Join Columns}
    • + *
    • {@link org.eclipse.jpt.core.internal.mappings.IAssociationOverride#getDefaultJoinColumns Default Join Columns}
    • + *
    + *

    + * + * @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 'Join Columns' containment reference list. + * The list contents are of type {@link org.eclipse.jpt.core.internal.mappings.IJoinColumn}. + * + *

    + * If the meaning of the 'Join Columns' containment reference list isn't clear, + * there really should be more of a description here... + *

    + * + * @return the value of the 'Join Columns' 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 getJoinColumns(); + + /** + * Returns the value of the 'Specified Join Columns' containment reference list. + * The list contents are of type {@link org.eclipse.jpt.core.internal.mappings.IJoinColumn}. + * + *

    + * If the meaning of the 'Specified Join Columns' containment reference list isn't clear, + * there really should be more of a description here... + *

    + * + * @return the value of the 'Specified Join Columns' 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 getSpecifiedJoinColumns(); + + /** + * Returns the value of the 'Default Join Columns' containment reference list. + * The list contents are of type {@link org.eclipse.jpt.core.internal.mappings.IJoinColumn}. + * + *

    + * If the meaning of the 'Default Join Columns' containment reference list isn't clear, + * there really should be more of a description here... + *

    + * + * @return the value of the 'Default Join Columns' 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 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; + +/** + * + * A representation of the model object 'IAttribute Override'. + * + * + *

    + * The following features are supported: + *

      + *
    • {@link org.eclipse.jpt.core.internal.mappings.IAttributeOverride#getColumn Column}
    • + *
    + *

    + * + * @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 'Column' containment reference. + * + *

    + * If the meaning of the 'Column' containment reference isn't clear, + * there really should be more of a description here... + *

    + * + * @return the value of the 'Column' 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; + +/** + * + * A representation of the model object 'Basic'. + * + * + *

    + * The following features are supported: + *

      + *
    • {@link org.eclipse.jpt.core.internal.mappings.IBasic#getFetch Fetch}
    • + *
    • {@link org.eclipse.jpt.core.internal.mappings.IBasic#getOptional Optional}
    • + *
    • {@link org.eclipse.jpt.core.internal.mappings.IBasic#getColumn Column}
    • + *
    • {@link org.eclipse.jpt.core.internal.mappings.IBasic#isLob Lob}
    • + *
    • {@link org.eclipse.jpt.core.internal.mappings.IBasic#getTemporal Temporal}
    • + *
    • {@link org.eclipse.jpt.core.internal.mappings.IBasic#getEnumerated Enumerated}
    • + *
    + *

    + * + * @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 'Fetch' attribute. + * The literals are from the enumeration {@link org.eclipse.jpt.core.internal.mappings.DefaultEagerFetchType}. + * + *

    + * If the meaning of the 'Fetch' attribute isn't clear, + * there really should be more of a description here... + *

    + * + * @return the value of the 'Fetch' 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 Fetch}' attribute. + * + * + * @param value the new value of the 'Fetch' attribute. + * @see org.eclipse.jpt.core.internal.mappings.DefaultEagerFetchType + * @see #getFetch() + * @generated + */ + void setFetch(DefaultEagerFetchType value); + + /** + * Returns the value of the 'Optional' attribute. + * The literals are from the enumeration {@link org.eclipse.jpt.core.internal.mappings.DefaultTrueBoolean}. + * + *

    + * If the meaning of the 'Optional' attribute isn't clear, + * there really should be more of a description here... + *

    + * + * @return the value of the 'Optional' 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 Optional}' attribute. + * + * + * @param value the new value of the 'Optional' attribute. + * @see org.eclipse.jpt.core.internal.mappings.DefaultTrueBoolean + * @see #getOptional() + * @generated + */ + void setOptional(DefaultTrueBoolean value); + + /** + * Returns the value of the 'Column' containment reference. + * + *

    + * If the meaning of the 'Column' containment reference isn't clear, + * there really should be more of a description here... + *

    + * + * @return the value of the 'Column' 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 'Lob' attribute. + * + *

    + * If the meaning of the 'Lob' attribute isn't clear, + * there really should be more of a description here... + *

    + * + * @return the value of the 'Lob' 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 Lob}' attribute. + * + * + * @param value the new value of the 'Lob' attribute. + * @see #isLob() + * @generated + */ + void setLob(boolean value); + + /** + * Returns the value of the 'Temporal' attribute. + * The literals are from the enumeration {@link org.eclipse.jpt.core.internal.mappings.TemporalType}. + * + *

    + * If the meaning of the 'Temporal' containment reference isn't clear, + * there really should be more of a description here... + *

    + * + * @return the value of the 'Temporal' 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 Temporal}' attribute. + * + * + * @param value the new value of the 'Temporal' attribute. + * @see org.eclipse.jpt.core.internal.mappings.TemporalType + * @see #getTemporal() + * @generated + */ + void setTemporal(TemporalType value); + + /** + * Returns the value of the 'Enumerated' attribute. + * The literals are from the enumeration {@link org.eclipse.jpt.core.internal.mappings.EnumType}. + * + *

    + * If the meaning of the 'Enumerated' attribute isn't clear, + * there really should be more of a description here... + *

    + * + * @return the value of the 'Enumerated' 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 Enumerated}' attribute. + * + * + * @param value the new value of the 'Enumerated' 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; + +/** + * + * A representation of the model object 'IColumn'. + * + * + *

    + * The following features are supported: + *

      + *
    • {@link org.eclipse.jpt.core.internal.mappings.IColumn#getLength Length}
    • + *
    • {@link org.eclipse.jpt.core.internal.mappings.IColumn#getPrecision Precision}
    • + *
    • {@link org.eclipse.jpt.core.internal.mappings.IColumn#getScale Scale}
    • + *
    + *

    + * + * @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 'Length' attribute. + * The default value is "255". + * + *

    + * If the meaning of the 'Length' attribute isn't clear, + * there really should be more of a description here... + *

    + * + * @return the value of the 'Length' 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 Length}' attribute. + * + * + * @param value the new value of the 'Length' attribute. + * @see #getLength() + * @generated + */ + void setLength(int value); + + /** + * Returns the value of the 'Precision' attribute. + * + *

    + * If the meaning of the 'Precision' attribute isn't clear, + * there really should be more of a description here... + *

    + * + * @return the value of the 'Precision' 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 Precision}' attribute. + * + * + * @param value the new value of the 'Precision' attribute. + * @see #getPrecision() + * @generated + */ + void setPrecision(int value); + + /** + * Returns the value of the 'Scale' attribute. + * + *

    + * If the meaning of the 'Scale' attribute isn't clear, + * there really should be more of a description here... + *

    + * + * @return the value of the 'Scale' 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 Scale}' attribute. + * + * + * @param value the new value of the 'Scale' 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; + +/** + * + * A representation of the model object 'IColumn Mapping'. + * + * + * + * @see org.eclipse.jpt.core.internal.mappings.JpaCoreMappingsPackage#getIColumnMapping() + * @model kind="class" interface="true" abstract="true" + * @generated + */ +public interface IColumnMapping extends EObject +{ + /** + * + *

    + * If the meaning of the 'Column' containment reference isn't clear, + * there really should be more of a description here... + *

    + * + * @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; + +/** + * + * A representation of the model object 'IDiscriminator Column'. + * + * + *

    + * The following features are supported: + *

      + *
    • {@link org.eclipse.jpt.core.internal.mappings.IDiscriminatorColumn#getDefaultName Default Name}
    • + *
    • {@link org.eclipse.jpt.core.internal.mappings.IDiscriminatorColumn#getSpecifiedName Specified Name}
    • + *
    • {@link org.eclipse.jpt.core.internal.mappings.IDiscriminatorColumn#getName Name}
    • + *
    • {@link org.eclipse.jpt.core.internal.mappings.IDiscriminatorColumn#getDiscriminatorType Discriminator Type}
    • + *
    • {@link org.eclipse.jpt.core.internal.mappings.IDiscriminatorColumn#getColumnDefinition Column Definition}
    • + *
    • {@link org.eclipse.jpt.core.internal.mappings.IDiscriminatorColumn#getDefaultLength Default Length}
    • + *
    • {@link org.eclipse.jpt.core.internal.mappings.IDiscriminatorColumn#getSpecifiedLength Specified Length}
    • + *
    • {@link org.eclipse.jpt.core.internal.mappings.IDiscriminatorColumn#getLength Length}
    • + *
    + *

    + * + * @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 'Default Name' attribute. + * + *

    + * If the meaning of the 'Default Name' attribute isn't clear, + * there really should be more of a description here... + *

    + * + * @return the value of the 'Default Name' 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 Default Name}' attribute. + * + * + * @param value the new value of the 'Default Name' attribute. + * @see #getDefaultName() + * @generated + */ + void setDefaultName(String value); + + /** + * Returns the value of the 'Specified Name' attribute. + * + *

    + * If the meaning of the 'Specified Name' attribute isn't clear, + * there really should be more of a description here... + *

    + * + * @return the value of the 'Specified Name' 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 Specified Name}' attribute. + * + * + * @param value the new value of the 'Specified Name' attribute. + * @see #getSpecifiedName() + * @generated + */ + void setSpecifiedName(String value); + + /** + * Returns the value of the 'Name' attribute. + * + *

    + * If the meaning of the 'Name' attribute isn't clear, + * there really should be more of a description here... + *

    + * + * @return the value of the 'Name' 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 'Discriminator Type' attribute. + * The literals are from the enumeration {@link org.eclipse.jpt.core.internal.mappings.DiscriminatorType}. + * + *

    + * If the meaning of the 'Discriminator Type' attribute isn't clear, + * there really should be more of a description here... + *

    + * + * @return the value of the 'Discriminator Type' 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 Discriminator Type}' attribute. + * + * + * @param value the new value of the 'Discriminator Type' attribute. + * @see org.eclipse.jpt.core.internal.mappings.DiscriminatorType + * @see #getDiscriminatorType() + * @generated + */ + void setDiscriminatorType(DiscriminatorType value); + + /** + * Returns the value of the 'Column Definition' attribute. + * + *

    + * If the meaning of the 'Column Definition' attribute isn't clear, + * there really should be more of a description here... + *

    + * + * @return the value of the 'Column Definition' 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 Column Definition}' attribute. + * + * + * @param value the new value of the 'Column Definition' attribute. + * @see #getColumnDefinition() + * @generated + */ + void setColumnDefinition(String value); + + /** + * Returns the value of the 'Default Length' attribute. + * The default value is "31". + * + *

    + * If the meaning of the 'Default Length' attribute isn't clear, + * there really should be more of a description here... + *

    + * + * @return the value of the 'Default Length' 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 Default Length}' attribute. + * + * + * @param value the new value of the 'Default Length' attribute. + * @see #getDefaultLength() + * @generated + */ + void setDefaultLength(int value); + + /** + * Returns the value of the 'Specified Length' attribute. + * The default value is "-1". + * + *

    + * If the meaning of the 'Specified Length' attribute isn't clear, + * there really should be more of a description here... + *

    + * + * @return the value of the 'Specified Length' 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 Specified Length}' attribute. + * + * + * @param value the new value of the 'Specified Length' attribute. + * @see #getSpecifiedLength() + * @generated + */ + void setSpecifiedLength(int value); + + /** + * Returns the value of the 'Length' attribute. + * + *

    + * If the meaning of the 'Length' attribute isn't clear, + * there really should be more of a description here... + *

    + * + * @return the value of the 'Length' 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; + +/** + * + * A representation of the model object 'Embeddable'. + * + * + * + * @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; + +/** + * + * A representation of the model object 'IEmbedded'. + * + * + *

    + * The following features are supported: + *

      + *
    • {@link org.eclipse.jpt.core.internal.mappings.IEmbedded#getAttributeOverrides Attribute Overrides}
    • + *
    • {@link org.eclipse.jpt.core.internal.mappings.IEmbedded#getSpecifiedAttributeOverrides Specified Attribute Overrides}
    • + *
    • {@link org.eclipse.jpt.core.internal.mappings.IEmbedded#getDefaultAttributeOverrides Default Attribute Overrides}
    • + *
    + *

    + * + * @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 'Attribute Overrides' containment reference list. + * The list contents are of type {@link org.eclipse.jpt.core.internal.mappings.IAttributeOverride}. + * + *

    + * If the meaning of the 'Attribute Overrides' containment reference list isn't clear, + * there really should be more of a description here... + *

    + * + * @return the value of the 'Attribute Overrides' 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 getAttributeOverrides(); + + /** + * Returns the value of the 'Specified Attribute Overrides' containment reference list. + * The list contents are of type {@link org.eclipse.jpt.core.internal.mappings.IAttributeOverride}. + * + *

    + * If the meaning of the 'Specified Attribute Overrides' containment reference list isn't clear, + * there really should be more of a description here... + *

    + * + * @return the value of the 'Specified Attribute Overrides' 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 getSpecifiedAttributeOverrides(); + + /** + * Returns the value of the 'Default Attribute Overrides' containment reference list. + * The list contents are of type {@link org.eclipse.jpt.core.internal.mappings.IAttributeOverride}. + * + *

    + * If the meaning of the 'Default Attribute Overrides' containment reference list isn't clear, + * there really should be more of a description here... + *

    + * + * @return the value of the 'Default Attribute Overrides' 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 getDefaultAttributeOverrides(); + + /** + * + * + * @model + * @generated + */ + IEmbeddable embeddable(); + + IAttributeOverride createAttributeOverride(int index); + + Iterator 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 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; + +/** + * + * A representation of the model object 'IEmbedded Id'. + * + * + * + * @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; + +/** + * + * A representation of the model object 'Entity'. + * + * + *

    + * The following features are supported: + *

      + *
    • {@link org.eclipse.jpt.core.internal.mappings.IEntity#getSpecifiedName Specified Name}
    • + *
    • {@link org.eclipse.jpt.core.internal.mappings.IEntity#getDefaultName Default Name}
    • + *
    • {@link org.eclipse.jpt.core.internal.mappings.IEntity#getTable Table}
    • + *
    • {@link org.eclipse.jpt.core.internal.mappings.IEntity#getPrimaryKeyJoinColumns Primary Key Join Columns}
    • + *
    • {@link org.eclipse.jpt.core.internal.mappings.IEntity#getSpecifiedPrimaryKeyJoinColumns Specified Primary Key Join Columns}
    • + *
    • {@link org.eclipse.jpt.core.internal.mappings.IEntity#getDefaultPrimaryKeyJoinColumns Default Primary Key Join Columns}
    • + *
    • {@link org.eclipse.jpt.core.internal.mappings.IEntity#getInheritanceStrategy Inheritance Strategy}
    • + *
    • {@link org.eclipse.jpt.core.internal.mappings.IEntity#getDefaultDiscriminatorValue Default Discriminator Value}
    • + *
    • {@link org.eclipse.jpt.core.internal.mappings.IEntity#getSpecifiedDiscriminatorValue Specified Discriminator Value}
    • + *
    • {@link org.eclipse.jpt.core.internal.mappings.IEntity#getDiscriminatorValue Discriminator Value}
    • + *
    • {@link org.eclipse.jpt.core.internal.mappings.IEntity#getDiscriminatorColumn Discriminator Column}
    • + *
    • {@link org.eclipse.jpt.core.internal.mappings.IEntity#getSequenceGenerator Sequence Generator}
    • + *
    • {@link org.eclipse.jpt.core.internal.mappings.IEntity#getTableGenerator Table Generator}
    • + *
    • {@link org.eclipse.jpt.core.internal.mappings.IEntity#getAttributeOverrides Attribute Overrides}
    • + *
    • {@link org.eclipse.jpt.core.internal.mappings.IEntity#getSpecifiedAttributeOverrides Specified Attribute Overrides}
    • + *
    • {@link org.eclipse.jpt.core.internal.mappings.IEntity#getDefaultAttributeOverrides Default Attribute Overrides}
    • + *
    • {@link org.eclipse.jpt.core.internal.mappings.IEntity#getAssociationOverrides Association Overrides}
    • + *
    • {@link org.eclipse.jpt.core.internal.mappings.IEntity#getSpecifiedAssociationOverrides Specified Association Overrides}
    • + *
    • {@link org.eclipse.jpt.core.internal.mappings.IEntity#getDefaultAssociationOverrides Default Association Overrides}
    • + *
    • {@link org.eclipse.jpt.core.internal.mappings.IEntity#getNamedQueries Named Queries}
    • + *
    • {@link org.eclipse.jpt.core.internal.mappings.IEntity#getNamedNativeQueries Named Native Queries}
    • + *
    + *

    + * + * @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 'Specified Name' attribute. + * + *

    + * If the meaning of the 'Specified Name' attribute isn't clear, + * there really should be more of a description here... + *

    + * + * @return the value of the 'Specified Name' 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 Specified Name}' attribute. + * + * + * @param value the new value of the 'Specified Name' attribute. + * @see #getSpecifiedName() + * @generated + */ + void setSpecifiedName(String value); + + /** + * Returns the value of the 'Default Name' attribute. + * + *

    + * If the meaning of the 'Default Name' attribute isn't clear, + * there really should be more of a description here... + *

    + * + * @return the value of the 'Default Name' attribute. + * @see org.eclipse.jpt.core.internal.mappings.JpaCoreMappingsPackage#getIEntity_DefaultName() + * @model changeable="false" + * @generated + */ + String getDefaultName(); + + /** + * Returns the value of the 'Table' containment reference. + * + *

    + * If the meaning of the 'Table' containment reference isn't clear, + * there really should be more of a description here... + *

    + * + * @return the value of the 'Table' containment reference. + * @see org.eclipse.jpt.core.internal.mappings.JpaCoreMappingsPackage#getIEntity_Table() + * @model containment="true" required="true" changeable="false" + * @generated + */ + ITable getTable(); + + /** + * + *

    + * If the meaning of the 'Secondary Tables' containment reference list isn't clear, + * there really should be more of a description here... + *

    + * + * @model kind="operation" type="org.eclipse.jpt.core.internal.mappings.ISecondaryTable" + * @generated + */ + EList getSecondaryTables(); + + /** + * Returns the value of the 'Inheritance Strategy' attribute. + * The literals are from the enumeration {@link org.eclipse.jpt.core.internal.mappings.InheritanceType}. + * + *

    + * If the meaning of the 'Inheritance Strategy' attribute isn't clear, + * there really should be more of a description here... + *

    + * + * @return the value of the 'Inheritance Strategy' 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 Inheritance Strategy}' attribute. + * + * + * @param value the new value of the 'Inheritance Strategy' attribute. + * @see org.eclipse.jpt.core.internal.mappings.InheritanceType + * @see #getInheritanceStrategy() + * @generated + */ + void setInheritanceStrategy(InheritanceType value); + + /** + * Returns the value of the 'Discriminator Column' containment reference. + * + *

    + * If the meaning of the 'Discriminator Column' containment reference isn't clear, + * there really should be more of a description here... + *

    + * + * @return the value of the 'Discriminator Column' 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 'Sequence Generator' containment reference. + * + *

    + * If the meaning of the 'Sequence Generator' containment reference isn't clear, + * there really should be more of a description here... + *

    + * + * @return the value of the 'Sequence Generator' 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 Sequence Generator}' containment reference. + * + * + * @param value the new value of the 'Sequence Generator' containment reference. + * @see #getSequenceGenerator() + * @generated + */ + void setSequenceGenerator(ISequenceGenerator value); + + /** + * Returns the value of the 'Table Generator' containment reference. + * + *

    + * If the meaning of the 'Table Generator' containment reference isn't clear, + * there really should be more of a description here... + *

    + * + * @return the value of the 'Table Generator' 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 Table Generator}' containment reference. + * + * + * @param value the new value of the 'Table Generator' containment reference. + * @see #getTableGenerator() + * @generated + */ + void setTableGenerator(ITableGenerator value); + + /** + * Returns the value of the 'Default Discriminator Value' attribute. + * + *

    + * If the meaning of the 'Default Discriminator Value' attribute isn't clear, + * there really should be more of a description here... + *

    + * + * @return the value of the 'Default Discriminator Value' 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 Default Discriminator Value}' attribute. + * + * + * @param value the new value of the 'Default Discriminator Value' attribute. + * @see #getDefaultDiscriminatorValue() + * @generated + */ + void setDefaultDiscriminatorValue(String value); + + /** + * Returns the value of the 'Specified Discriminator Value' attribute. + * + *

    + * If the meaning of the 'Specified Discriminator Value' attribute isn't clear, + * there really should be more of a description here... + *

    + * + * @return the value of the 'Specified Discriminator Value' 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 Specified Discriminator Value}' attribute. + * + * + * @param value the new value of the 'Specified Discriminator Value' attribute. + * @see #getSpecifiedDiscriminatorValue() + * @generated + */ + void setSpecifiedDiscriminatorValue(String value); + + /** + * Returns the value of the 'Discriminator Value' attribute. + * + *

    + * If the meaning of the 'Discriminator Value' reference isn't clear, + * there really should be more of a description here... + *

    + * + * @return the value of the 'Discriminator Value' 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 'Primary Key Join Columns' containment reference list. + * The list contents are of type {@link org.eclipse.jpt.core.internal.mappings.IPrimaryKeyJoinColumn}. + * + *

    + * If the meaning of the 'Primary Key Join Columns' containment reference list isn't clear, + * there really should be more of a description here... + *

    + * + * @return the value of the 'Primary Key Join Columns' 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 getPrimaryKeyJoinColumns(); + + /** + * Returns the value of the 'Specified Primary Key Join Columns' containment reference list. + * The list contents are of type {@link org.eclipse.jpt.core.internal.mappings.IPrimaryKeyJoinColumn}. + * + *

    + * If the meaning of the 'Specified Primary Key Join Columns' containment reference list isn't clear, + * there really should be more of a description here... + *

    + * + * @return the value of the 'Specified Primary Key Join Columns' 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 getSpecifiedPrimaryKeyJoinColumns(); + + /** + * Returns the value of the 'Default Primary Key Join Columns' containment reference list. + * The list contents are of type {@link org.eclipse.jpt.core.internal.mappings.IPrimaryKeyJoinColumn}. + * + *

    + * If the meaning of the 'Default Primary Key Join Columns' containment reference list isn't clear, + * there really should be more of a description here... + *

    + * + * @return the value of the 'Default Primary Key Join Columns' 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 getDefaultPrimaryKeyJoinColumns(); + + /** + * Returns the value of the 'Attribute Overrides' containment reference list. + * The list contents are of type {@link org.eclipse.jpt.core.internal.mappings.IAttributeOverride}. + * + *

    + * If the meaning of the 'Attribute Overrides' reference list isn't clear, + * there really should be more of a description here... + *

    + * + * @return the value of the 'Attribute Overrides' 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 getAttributeOverrides(); + + /** + * Returns the value of the 'Specified Attribute Overrides' containment reference list. + * The list contents are of type {@link org.eclipse.jpt.core.internal.mappings.IAttributeOverride}. + * + *

    + * If the meaning of the 'Specified Attribute Overrides' reference list isn't clear, + * there really should be more of a description here... + *

    + * + * @return the value of the 'Specified Attribute Overrides' 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 getSpecifiedAttributeOverrides(); + + /** + * Returns the value of the 'Default Attribute Overrides' containment reference list. + * The list contents are of type {@link org.eclipse.jpt.core.internal.mappings.IAttributeOverride}. + * + *

    + * If the meaning of the 'Default Attribute Overrides' reference list isn't clear, + * there really should be more of a description here... + *

    + * + * @return the value of the 'Default Attribute Overrides' 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 getDefaultAttributeOverrides(); + + /** + * Returns the value of the 'Association Overrides' containment reference list. + * The list contents are of type {@link org.eclipse.jpt.core.internal.mappings.IAssociationOverride}. + * + *

    + * If the meaning of the 'Association Overrides' reference list isn't clear, + * there really should be more of a description here... + *

    + * + * @return the value of the 'Association Overrides' 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 getAssociationOverrides(); + + /** + * Returns the value of the 'Specified Association Overrides' containment reference list. + * The list contents are of type {@link org.eclipse.jpt.core.internal.mappings.IAssociationOverride}. + * + *

    + * If the meaning of the 'Specified Association Overrides' reference list isn't clear, + * there really should be more of a description here... + *

    + * + * @return the value of the 'Specified Association Overrides' 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 getSpecifiedAssociationOverrides(); + + /** + * Returns the value of the 'Default Association Overrides' containment reference list. + * The list contents are of type {@link org.eclipse.jpt.core.internal.mappings.IAssociationOverride}. + * + *

    + * If the meaning of the 'Default Association Overrides' reference list isn't clear, + * there really should be more of a description here... + *

    + * + * @return the value of the 'Default Association Overrides' 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 getDefaultAssociationOverrides(); + + /** + * Returns the value of the 'Named Queries' containment reference list. + * The list contents are of type {@link org.eclipse.jpt.core.internal.mappings.INamedQuery}. + * + *

    + * If the meaning of the 'Named Queries' containment reference list isn't clear, + * there really should be more of a description here... + *

    + * + * @return the value of the 'Named Queries' 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 getNamedQueries(); + + /** + * Returns the value of the 'Named Native Queries' containment reference list. + * The list contents are of type {@link org.eclipse.jpt.core.internal.mappings.INamedNativeQuery}. + * + *

    + * If the meaning of the 'Named Native Queries' containment reference list isn't clear, + * there really should be more of a description here... + *

    + * + * @return the value of the 'Named Native Queries' 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 getNamedNativeQueries(); + + /** + * + * + * @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(); + + /** + * + * 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) + * + * @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 allOverridableAttributeNames(); + + Iterator 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 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 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; + +/** + * + * A representation of the model object 'IGenerated Value'. + * + * + *

    + * The following features are supported: + *

      + *
    • {@link org.eclipse.jpt.core.internal.mappings.IGeneratedValue#getStrategy Strategy}
    • + *
    • {@link org.eclipse.jpt.core.internal.mappings.IGeneratedValue#getGenerator Generator}
    • + *
    + *

    + * + * @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 'Strategy' attribute. + * The literals are from the enumeration {@link org.eclipse.jpt.core.internal.mappings.GenerationType}. + * + *

    + * If the meaning of the 'Strategy' attribute isn't clear, + * there really should be more of a description here... + *

    + * + * @return the value of the 'Strategy' 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 Strategy}' attribute. + * + * + * @param value the new value of the 'Strategy' attribute. + * @see org.eclipse.jpt.core.internal.mappings.GenerationType + * @see #getStrategy() + * @generated + */ + void setStrategy(GenerationType value); + + /** + * Returns the value of the 'Generator' attribute. + * + *

    + * If the meaning of the 'Generator' attribute isn't clear, + * there really should be more of a description here... + *

    + * + * @return the value of the 'Generator' 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 Generator}' attribute. + * + * + * @param value the new value of the 'Generator' 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; + +/** + * + * A representation of the model object 'IGenerator'. + * + * + *

    + * The following features are supported: + *

      + *
    • {@link org.eclipse.jpt.core.internal.mappings.IGenerator#getName Name}
    • + *
    • {@link org.eclipse.jpt.core.internal.mappings.IGenerator#getInitialValue Initial Value}
    • + *
    • {@link org.eclipse.jpt.core.internal.mappings.IGenerator#getSpecifiedInitialValue Specified Initial Value}
    • + *
    • {@link org.eclipse.jpt.core.internal.mappings.IGenerator#getDefaultInitialValue Default Initial Value}
    • + *
    • {@link org.eclipse.jpt.core.internal.mappings.IGenerator#getAllocationSize Allocation Size}
    • + *
    • {@link org.eclipse.jpt.core.internal.mappings.IGenerator#getSpecifiedAllocationSize Specified Allocation Size}
    • + *
    • {@link org.eclipse.jpt.core.internal.mappings.IGenerator#getDefaultAllocationSize Default Allocation Size}
    • + *
    + *

    + * + * @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 'Name' attribute. + * + *

    + * If the meaning of the 'Name' attribute isn't clear, + * there really should be more of a description here... + *

    + * + * @return the value of the 'Name' 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 Name}' attribute. + * + * + * @param value the new value of the 'Name' attribute. + * @see #getName() + * @generated + */ + void setName(String value); + + /** + * Returns the value of the 'Initial Value' attribute. + * + *

    + * If the meaning of the 'Initial Value' attribute isn't clear, + * there really should be more of a description here... + *

    + * + * @return the value of the 'Initial Value' 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 'Specified Initial Value' attribute. + * The default value is "-1". + * + *

    + * If the meaning of the 'Specified Initial Value' attribute isn't clear, + * there really should be more of a description here... + *

    + * + * @return the value of the 'Specified Initial Value' 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 Specified Initial Value}' attribute. + * + * + * @param value the new value of the 'Specified Initial Value' attribute. + * @see #getSpecifiedInitialValue() + * @generated + */ + void setSpecifiedInitialValue(int value); + + /** + * Returns the value of the 'Default Initial Value' attribute. + * + *

    + * If the meaning of the 'Default Initial Value' attribute isn't clear, + * there really should be more of a description here... + *

    + * + * @return the value of the 'Default Initial Value' attribute. + * @see org.eclipse.jpt.core.internal.mappings.JpaCoreMappingsPackage#getIGenerator_DefaultInitialValue() + * @model changeable="false" + * @generated + */ + int getDefaultInitialValue(); + + /** + * Returns the value of the 'Allocation Size' attribute. + * + *

    + * If the meaning of the 'Allocation Size' attribute isn't clear, + * there really should be more of a description here... + *

    + * + * @return the value of the 'Allocation Size' 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 'Specified Allocation Size' attribute. + * The default value is "-1". + * + *

    + * If the meaning of the 'Specified Allocation Size' attribute isn't clear, + * there really should be more of a description here... + *

    + * + * @return the value of the 'Specified Allocation Size' 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 Specified Allocation Size}' attribute. + * + * + * @param value the new value of the 'Specified Allocation Size' attribute. + * @see #getSpecifiedAllocationSize() + * @generated + */ + void setSpecifiedAllocationSize(int value); + + /** + * Returns the value of the 'Default Allocation Size' attribute. + * + *

    + * If the meaning of the 'Default Allocation Size' attribute isn't clear, + * there really should be more of a description here... + *

    + * + * @return the value of the 'Default Allocation Size' 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; + +/** + * + * A representation of the model object 'Id'. + * + * + *

    + * The following features are supported: + *

      + *
    • {@link org.eclipse.jpt.core.internal.mappings.IId#getColumn Column}
    • + *
    • {@link org.eclipse.jpt.core.internal.mappings.IId#getGeneratedValue Generated Value}
    • + *
    • {@link org.eclipse.jpt.core.internal.mappings.IId#getTemporal Temporal}
    • + *
    • {@link org.eclipse.jpt.core.internal.mappings.IId#getTableGenerator Table Generator}
    • + *
    • {@link org.eclipse.jpt.core.internal.mappings.IId#getSequenceGenerator Sequence Generator}
    • + *
    + *

    + * + * @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 'Column' containment reference. + * + *

    + * If the meaning of the 'Column' containment reference isn't clear, + * there really should be more of a description here... + *

    + * + * @return the value of the 'Column' 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 'Generated Value' containment reference. + * + *

    + * If the meaning of the 'Generated Value' reference isn't clear, + * there really should be more of a description here... + *

    + * + * @return the value of the 'Generated Value' 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 Generated Value}' containment reference. + * + * + * @param value the new value of the 'Generated Value' containment reference. + * @see #getGeneratedValue() + * @generated + */ + void setGeneratedValue(IGeneratedValue value); + + /** + * Returns the value of the 'Temporal' attribute. + * The literals are from the enumeration {@link org.eclipse.jpt.core.internal.mappings.TemporalType}. + * + *

    + * If the meaning of the 'Temporal' attribute isn't clear, + * there really should be more of a description here... + *

    + * + * @return the value of the 'Temporal' 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 Temporal}' attribute. + * + * + * @param value the new value of the 'Temporal' attribute. + * @see org.eclipse.jpt.core.internal.mappings.TemporalType + * @see #getTemporal() + * @generated + */ + void setTemporal(TemporalType value); + + /** + * Returns the value of the 'Table Generator' containment reference. + * + *

    + * If the meaning of the 'Table Generator' reference isn't clear, + * there really should be more of a description here... + *

    + * + * @return the value of the 'Table Generator' 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 Table Generator}' containment reference. + * + * + * @param value the new value of the 'Table Generator' containment reference. + * @see #getTableGenerator() + * @generated + */ + void setTableGenerator(ITableGenerator value); + + /** + * Returns the value of the 'Sequence Generator' containment reference. + * + *

    + * If the meaning of the 'Sequence Generator' reference isn't clear, + * there really should be more of a description here... + *

    + * + * @return the value of the 'Sequence Generator' 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 Sequence Generator}' containment reference. + * + * + * @param value the new value of the 'Sequence Generator' 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; + +/** + * + * A representation of the model object 'IJoin Column'. + * + * + * + * @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; + +/** + * + * A representation of the model object 'IJoin Table'. + * + * + *

    + * The following features are supported: + *

      + *
    • {@link org.eclipse.jpt.core.internal.mappings.IJoinTable#getJoinColumns Join Columns}
    • + *
    • {@link org.eclipse.jpt.core.internal.mappings.IJoinTable#getSpecifiedJoinColumns Specified Join Columns}
    • + *
    • {@link org.eclipse.jpt.core.internal.mappings.IJoinTable#getDefaultJoinColumns Default Join Columns}
    • + *
    • {@link org.eclipse.jpt.core.internal.mappings.IJoinTable#getInverseJoinColumns Inverse Join Columns}
    • + *
    • {@link org.eclipse.jpt.core.internal.mappings.IJoinTable#getSpecifiedInverseJoinColumns Specified Inverse Join Columns}
    • + *
    • {@link org.eclipse.jpt.core.internal.mappings.IJoinTable#getDefaultInverseJoinColumns Default Inverse Join Columns}
    • + *
    + *

    + * + * @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 'Join Columns' containment reference list. + * The list contents are of type {@link org.eclipse.jpt.core.internal.mappings.IJoinColumn}. + * + *

    + * If the meaning of the 'Join Columns' containment reference list isn't clear, + * there really should be more of a description here... + *

    + * + * @return the value of the 'Join Columns' 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 getJoinColumns(); + + /** + * Returns the value of the 'Specified Join Columns' containment reference list. + * The list contents are of type {@link org.eclipse.jpt.core.internal.mappings.IJoinColumn}. + * + *

    + * If the meaning of the 'Specified Join Columns' containment reference list isn't clear, + * there really should be more of a description here... + *

    + * + * @return the value of the 'Specified Join Columns' 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 getSpecifiedJoinColumns(); + + /** + * Returns the value of the 'Default Join Columns' containment reference list. + * The list contents are of type {@link org.eclipse.jpt.core.internal.mappings.IJoinColumn}. + * + *

    + * If the meaning of the 'Default Join Columns' containment reference list isn't clear, + * there really should be more of a description here... + *

    + * + * @return the value of the 'Default Join Columns' 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 getDefaultJoinColumns(); + + /** + * Returns the value of the 'Inverse Join Columns' containment reference list. + * The list contents are of type {@link org.eclipse.jpt.core.internal.mappings.IJoinColumn}. + * + *

    + * If the meaning of the 'Inverse Join Columns' containment reference list isn't clear, + * there really should be more of a description here... + *

    + * + * @return the value of the 'Inverse Join Columns' 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 getInverseJoinColumns(); + + /** + * Returns the value of the 'Specified Inverse Join Columns' containment reference list. + * The list contents are of type {@link org.eclipse.jpt.core.internal.mappings.IJoinColumn}. + * + *

    + * If the meaning of the 'Specified Inverse Join Columns' containment reference list isn't clear, + * there really should be more of a description here... + *

    + * + * @return the value of the 'Specified Inverse Join Columns' 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 getSpecifiedInverseJoinColumns(); + + /** + * Returns the value of the 'Default Inverse Join Columns' containment reference list. + * The list contents are of type {@link org.eclipse.jpt.core.internal.mappings.IJoinColumn}. + * + *

    + * If the meaning of the 'Default Inverse Join Columns' containment reference list isn't clear, + * there really should be more of a description here... + *

    + * + * @return the value of the 'Default Inverse Join Columns' 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 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 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 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 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; + +/** + * + * A representation of the model object 'IMany To Many'. + * + * + * + * @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; + +/** + * + * A representation of the model object 'IMany To One'. + * + * + * + * @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; + +/** + * + * A representation of the model object 'Mapped Superclass'. + * + * + * + * @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; + +/** + * + * A representation of the model object 'IMulti Relationship Mapping'. + * + * + *

    + * The following features are supported: + *

      + *
    • {@link org.eclipse.jpt.core.internal.mappings.IMultiRelationshipMapping#getFetch Fetch}
    • + *
    • {@link org.eclipse.jpt.core.internal.mappings.IMultiRelationshipMapping#getJoinTable Join Table}
    • + *
    • {@link org.eclipse.jpt.core.internal.mappings.IMultiRelationshipMapping#getOrderBy Order By}
    • + *
    + *

    + * + * @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 'Fetch' attribute. + * The literals are from the enumeration {@link org.eclipse.jpt.core.internal.mappings.DefaultLazyFetchType}. + * + *

    + * If the meaning of the 'Fetch' attribute isn't clear, + * there really should be more of a description here... + *

    + * + * @return the value of the 'Fetch' 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 Fetch}' attribute. + * + * + * @param value the new value of the 'Fetch' attribute. + * @see org.eclipse.jpt.core.internal.mappings.DefaultLazyFetchType + * @see #getFetch() + * @generated + */ + void setFetch(DefaultLazyFetchType value); + + /** + * Returns the value of the 'Join Table' containment reference. + * + *

    + * If the meaning of the 'Join Table' containment reference isn't clear, + * there really should be more of a description here... + *

    + * + * @return the value of the 'Join Table' 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 'Order By' containment reference. + * + *

    + * If the meaning of the 'Order By' reference isn't clear, + * there really should be more of a description here... + *

    + * + * @return the value of the 'Order By' 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; + +/** + * + * A representation of the model object 'INamed Column'. + * + * + *

    + * The following features are supported: + *

      + *
    • {@link org.eclipse.jpt.core.internal.mappings.INamedColumn#getName Name}
    • + *
    • {@link org.eclipse.jpt.core.internal.mappings.INamedColumn#getSpecifiedName Specified Name}
    • + *
    • {@link org.eclipse.jpt.core.internal.mappings.INamedColumn#getDefaultName Default Name}
    • + *
    • {@link org.eclipse.jpt.core.internal.mappings.INamedColumn#getColumnDefinition Column Definition}
    • + *
    + *

    + * + * @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 'Name' attribute. + * + *

    + * If the meaning of the 'Name' attribute isn't clear, + * there really should be more of a description here... + *

    + * + * @return the value of the 'Name' 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 'Specified Name' attribute. + * + *

    + * If the meaning of the 'Specified Name' attribute isn't clear, + * there really should be more of a description here... + *

    + * + * @return the value of the 'Specified Name' 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 Specified Name}' attribute. + * + * + * @param value the new value of the 'Specified Name' attribute. + * @see #getSpecifiedName() + * @generated + */ + void setSpecifiedName(String value); + + /** + * Returns the value of the 'Default Name' attribute. + * + *

    + * If the meaning of the 'Default Name' attribute isn't clear, + * there really should be more of a description here... + *

    + * + * @return the value of the 'Default Name' attribute. + * @see org.eclipse.jpt.core.internal.mappings.JpaCoreMappingsPackage#getINamedColumn_DefaultName() + * @model changeable="false" + * @generated + */ + String getDefaultName(); + + /** + * Returns the value of the 'Column Definition' attribute. + * + *

    + * If the meaning of the 'Column Definition' attribute isn't clear, + * there really should be more of a description here... + *

    + * + * @return the value of the 'Column Definition' 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 Column Definition}' attribute. + * + * + * @param value the new value of the 'Column Definition' 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; + +/** + * + * A representation of the model object 'INamed Native Query'. + * + * + *

    + * The following features are supported: + *

      + *
    • {@link org.eclipse.jpt.core.internal.mappings.INamedNativeQuery#getResultClass Result Class}
    • + *
    • {@link org.eclipse.jpt.core.internal.mappings.INamedNativeQuery#getResultSetMapping Result Set Mapping}
    • + *
    + *

    + * + * @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 'Result Class' attribute. + * + *

    + * If the meaning of the 'Result Class' attribute isn't clear, + * there really should be more of a description here... + *

    + * + * @return the value of the 'Result Class' 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 Result Class}' attribute. + * + * + * @param value the new value of the 'Result Class' attribute. + * @see #getResultClass() + * @generated + */ + void setResultClass(String value); + + /** + * Returns the value of the 'Result Set Mapping' attribute. + * + *

    + * If the meaning of the 'Result Set Mapping' attribute isn't clear, + * there really should be more of a description here... + *

    + * + * @return the value of the 'Result Set Mapping' 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 Result Set Mapping}' attribute. + * + * + * @param value the new value of the 'Result Set Mapping' 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; + +/** + * + * A representation of the model object 'INamed Query'. + * + * + * + * @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; + +/** + * + * A representation of the model object 'INon Owning Mapping'. + * + * + *

    + * The following features are supported: + *

      + *
    • {@link org.eclipse.jpt.core.internal.mappings.INonOwningMapping#getMappedBy Mapped By}
    • + *
    + *

    + * + * @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 'Mapped By' attribute. + * + *

    + * If the meaning of the 'Mapped By' attribute isn't clear, + * there really should be more of a description here... + *

    + * + * @return the value of the 'Mapped By' 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 Mapped By}' attribute. + * + * + * @param value the new value of the 'Mapped By' attribute. + * @see #getMappedBy() + * @generated + */ + void setMappedBy(String value); + + Iterator 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; + +/** + * + * A representation of the model object 'IOne To Many'. + * + * + * + * @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; + +/** + * + * A representation of the model object 'IOne To One'. + * + * + * + * @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; + +/** + * + * A representation of the model object 'IOrder By'. + * + * + *

    + * The following features are supported: + *

      + *
    • {@link org.eclipse.jpt.core.internal.mappings.IOrderBy#getValue Value}
    • + *
    • {@link org.eclipse.jpt.core.internal.mappings.IOrderBy#getType Type}
    • + *
    + *

    + * + * @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 'Value' attribute. + * + *

    + * If the meaning of the 'Value' attribute isn't clear, + * there really should be more of a description here... + *

    + * + * @return the value of the 'Value' 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 Value}' attribute. + * + * + * @param value the new value of the 'Value' attribute. + * @see #getValue() + * @generated + */ + void setValue(String value); + + /** + * Returns the value of the 'Type' attribute. + * The literals are from the enumeration {@link org.eclipse.jpt.core.internal.mappings.OrderingType}. + * + *

    + * If the meaning of the 'Type' attribute isn't clear, + * there really should be more of a description here... + *

    + * + * @return the value of the 'Type' 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 Type}' attribute. + * + * + * @param value the new value of the 'Type' 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; + +/** + * + * A representation of the model object 'IOverride'. + * + * + *

    + * The following features are supported: + *

      + *
    • {@link org.eclipse.jpt.core.internal.mappings.IOverride#getName Name}
    • + *
    + *

    + * + * @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 'Name' attribute. + * + *

    + * If the meaning of the 'Name' attribute isn't clear, + * there really should be more of a description here... + *

    + * + * @return the value of the 'Name' 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 Name}' attribute. + * + * + * @param value the new value of the 'Name' 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; + +/** + * + * A representation of the model object 'IPrimary Key Join Column'. + * + * + * + * @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; + +/** + * + * A representation of the model object 'IQuery'. + * + * + *

    + * The following features are supported: + *

      + *
    • {@link org.eclipse.jpt.core.internal.mappings.IQuery#getName Name}
    • + *
    • {@link org.eclipse.jpt.core.internal.mappings.IQuery#getQuery Query}
    • + *
    • {@link org.eclipse.jpt.core.internal.mappings.IQuery#getHints Hints}
    • + *
    + *

    + * + * @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 'Name' attribute. + * + *

    + * If the meaning of the 'Name' attribute isn't clear, + * there really should be more of a description here... + *

    + * + * @return the value of the 'Name' 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 Name}' attribute. + * + * + * @param value the new value of the 'Name' attribute. + * @see #getName() + * @generated + */ + void setName(String value); + + /** + * Returns the value of the 'Query' attribute. + * + *

    + * If the meaning of the 'Query' attribute isn't clear, + * there really should be more of a description here... + *

    + * + * @return the value of the 'Query' 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 Query}' attribute. + * + * + * @param value the new value of the 'Query' attribute. + * @see #getQuery() + * @generated + */ + void setQuery(String value); + + /** + * Returns the value of the 'Hints' containment reference list. + * The list contents are of type {@link org.eclipse.jpt.core.internal.mappings.IQueryHint}. + * + *

    + * If the meaning of the 'Hints' containment reference list isn't clear, + * there really should be more of a description here... + *

    + * + * @return the value of the 'Hints' 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 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; + +/** + * + * A representation of the model object 'IQuery Hint'. + * + * + *

    + * The following features are supported: + *

      + *
    • {@link org.eclipse.jpt.core.internal.mappings.IQueryHint#getName Name}
    • + *
    • {@link org.eclipse.jpt.core.internal.mappings.IQueryHint#getValue Value}
    • + *
    + *

    + * + * @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 'Name' attribute. + * + *

    + * If the meaning of the 'Name' attribute isn't clear, + * there really should be more of a description here... + *

    + * + * @return the value of the 'Name' 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 Name}' attribute. + * + * + * @param value the new value of the 'Name' attribute. + * @see #getName() + * @generated + */ + void setName(String value); + + /** + * Returns the value of the 'Value' attribute. + * + *

    + * If the meaning of the 'Value' attribute isn't clear, + * there really should be more of a description here... + *

    + * + * @return the value of the 'Value' 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 Value}' attribute. + * + * + * @param value the new value of the 'Value' 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; + +/** + * + * A representation of the model object 'IRelationship Mapping'. + * + * + *

    + * The following features are supported: + *

      + *
    • {@link org.eclipse.jpt.core.internal.mappings.IRelationshipMapping#getTargetEntity Target Entity}
    • + *
    • {@link org.eclipse.jpt.core.internal.mappings.IRelationshipMapping#getSpecifiedTargetEntity Specified Target Entity}
    • + *
    • {@link org.eclipse.jpt.core.internal.mappings.IRelationshipMapping#getDefaultTargetEntity Default Target Entity}
    • + *
    • {@link org.eclipse.jpt.core.internal.mappings.IRelationshipMapping#getResolvedTargetEntity Resolved Target Entity}
    • + *
    + *

    + * + * @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 'Target Entity' attribute. + * + *

    + * If the meaning of the 'Target Entity' attribute isn't clear, + * there really should be more of a description here... + *

    + * + * @return the value of the 'Target Entity' 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 'Specified Target Entity' attribute. + * + *

    + * If the meaning of the 'Specified Target Entity' attribute isn't clear, + * there really should be more of a description here... + *

    + * + * @return the value of the 'Specified Target Entity' 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 Specified Target Entity}' attribute. + * + * + * @param value the new value of the 'Specified Target Entity' attribute. + * @see #getSpecifiedTargetEntity() + * @generated + */ + void setSpecifiedTargetEntity(String value); + + /** + * Returns the value of the 'Default Target Entity' attribute. + * + *

    + * If the meaning of the 'Default Target Entity' attribute isn't clear, + * there really should be more of a description here... + *

    + * + * @return the value of the 'Default Target Entity' attribute. + * @see org.eclipse.jpt.core.internal.mappings.JpaCoreMappingsPackage#getIRelationshipMapping_DefaultTargetEntity() + * @model changeable="false" + * @generated + */ + String getDefaultTargetEntity(); + + /** + * Returns the value of the 'Resolved Target Entity' reference. + * + *

    + * If the meaning of the 'Resolved Target Entity' reference isn't clear, + * there really should be more of a description here... + *

    + * + * @return the value of the 'Resolved Target Entity' 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 Resolved Target Entity}' reference. + * + * + * @param value the new value of the 'Resolved Target Entity' 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; + +/** + * + * A representation of the model object 'ISecondary Table'. + * + * + * + * @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; + +/** + * + * A representation of the model object 'ISequence Generator'. + * + * + *

    + * The following features are supported: + *

      + *
    • {@link org.eclipse.jpt.core.internal.mappings.ISequenceGenerator#getSequenceName Sequence Name}
    • + *
    • {@link org.eclipse.jpt.core.internal.mappings.ISequenceGenerator#getSpecifiedSequenceName Specified Sequence Name}
    • + *
    • {@link org.eclipse.jpt.core.internal.mappings.ISequenceGenerator#getDefaultSequenceName Default Sequence Name}
    • + *
    + *

    + * + * @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 'Sequence Name' attribute. + * + *

    + * If the meaning of the 'Sequence Name' attribute isn't clear, + * there really should be more of a description here... + *

    + * + * @return the value of the 'Sequence Name' 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 'Specified Sequence Name' attribute. + * + *

    + * If the meaning of the 'Specified Sequence Name' attribute isn't clear, + * there really should be more of a description here... + *

    + * + * @return the value of the 'Specified Sequence Name' 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 Specified Sequence Name}' attribute. + * + * + * @param value the new value of the 'Specified Sequence Name' attribute. + * @see #getSpecifiedSequenceName() + * @generated + */ + void setSpecifiedSequenceName(String value); + + /** + * Returns the value of the 'Default Sequence Name' attribute. + * + *

    + * If the meaning of the 'Default Sequence Name' attribute isn't clear, + * there really should be more of a description here... + *

    + * + * @return the value of the 'Default Sequence Name' 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; + +/** + * + * A representation of the model object 'ISingle Relationship Mapping'. + * + * + *

    + * The following features are supported: + *

      + *
    • {@link org.eclipse.jpt.core.internal.mappings.ISingleRelationshipMapping#getFetch Fetch}
    • + *
    • {@link org.eclipse.jpt.core.internal.mappings.ISingleRelationshipMapping#getJoinColumns Join Columns}
    • + *
    • {@link org.eclipse.jpt.core.internal.mappings.ISingleRelationshipMapping#getSpecifiedJoinColumns Specified Join Columns}
    • + *
    • {@link org.eclipse.jpt.core.internal.mappings.ISingleRelationshipMapping#getDefaultJoinColumns Default Join Columns}
    • + *
    + *

    + * + * @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 'Fetch' attribute. + * The literals are from the enumeration {@link org.eclipse.jpt.core.internal.mappings.DefaultEagerFetchType}. + * + *

    + * If the meaning of the 'Fetch' attribute isn't clear, + * there really should be more of a description here... + *

    + * + * @return the value of the 'Fetch' 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 Fetch}' attribute. + * + * + * @param value the new value of the 'Fetch' attribute. + * @see org.eclipse.jpt.core.internal.mappings.DefaultEagerFetchType + * @see #getFetch() + * @generated + */ + void setFetch(DefaultEagerFetchType value); + + /** + * Returns the value of the 'Join Columns' containment reference list. + * The list contents are of type {@link org.eclipse.jpt.core.internal.mappings.IJoinColumn}. + * + *

    + * If the meaning of the 'Join Columns' containment reference list isn't clear, + * there really should be more of a description here... + *

    + * + * @return the value of the 'Join Columns' 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 getJoinColumns(); + + /** + * Returns the value of the 'Specified Join Columns' containment reference list. + * The list contents are of type {@link org.eclipse.jpt.core.internal.mappings.IJoinColumn}. + * + *

    + * If the meaning of the 'Specified Join Columns' containment reference list isn't clear, + * there really should be more of a description here... + *

    + * + * @return the value of the 'Specified Join Columns' 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 getSpecifiedJoinColumns(); + + /** + * Returns the value of the 'Default Join Columns' containment reference list. + * The list contents are of type {@link org.eclipse.jpt.core.internal.mappings.IJoinColumn}. + * + *

    + * If the meaning of the 'Default Join Columns' containment reference list isn't clear, + * there really should be more of a description here... + *

    + * + * @return the value of the 'Default Join Columns' 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 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; + +/** + * + * A representation of the model object 'ITable'. + * + * + *

    + * The following features are supported: + *

      + *
    • {@link org.eclipse.jpt.core.internal.mappings.ITable#getName Name}
    • + *
    • {@link org.eclipse.jpt.core.internal.mappings.ITable#getSpecifiedName Specified Name}
    • + *
    • {@link org.eclipse.jpt.core.internal.mappings.ITable#getDefaultName Default Name}
    • + *
    • {@link org.eclipse.jpt.core.internal.mappings.ITable#getCatalog Catalog}
    • + *
    • {@link org.eclipse.jpt.core.internal.mappings.ITable#getSpecifiedCatalog Specified Catalog}
    • + *
    • {@link org.eclipse.jpt.core.internal.mappings.ITable#getDefaultCatalog Default Catalog}
    • + *
    • {@link org.eclipse.jpt.core.internal.mappings.ITable#getSchema Schema}
    • + *
    • {@link org.eclipse.jpt.core.internal.mappings.ITable#getSpecifiedSchema Specified Schema}
    • + *
    • {@link org.eclipse.jpt.core.internal.mappings.ITable#getDefaultSchema Default Schema}
    • + *
    + *

    + * + * @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 'Name' attribute. + * + *

    + * If the meaning of the 'Name' attribute isn't clear, + * there really should be more of a description here... + *

    + * + * @return the value of the 'Name' 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 'Default Name' attribute. + * + *

    + * If the meaning of the 'Default Name' attribute isn't clear, + * there really should be more of a description here... + *

    + * + * @return the value of the 'Default Name' attribute. + * @see org.eclipse.jpt.core.internal.mappings.JpaCoreMappingsPackage#getITable_DefaultName() + * @model changeable="false" + * @generated + */ + String getDefaultName(); + + /** + * Returns the value of the 'Catalog' attribute. + * + *

    + * If the meaning of the 'Catalog' attribute isn't clear, + * there really should be more of a description here... + *

    + * + * @return the value of the 'Catalog' 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 'Specified Catalog' attribute. + * + *

    + * If the meaning of the 'Specified Catalog' attribute isn't clear, + * there really should be more of a description here... + *

    + * + * @return the value of the 'Specified Catalog' 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 Specified Catalog}' attribute. + * + * + * @param value the new value of the 'Specified Catalog' attribute. + * @see #getSpecifiedCatalog() + * @generated + */ + void setSpecifiedCatalog(String value); + + /** + * Returns the value of the 'Default Catalog' attribute. + * + *

    + * If the meaning of the 'Default Catalog' attribute isn't clear, + * there really should be more of a description here... + *

    + * + * @return the value of the 'Default Catalog' attribute. + * @see org.eclipse.jpt.core.internal.mappings.JpaCoreMappingsPackage#getITable_DefaultCatalog() + * @model changeable="false" + * @generated + */ + String getDefaultCatalog(); + + /** + * Returns the value of the 'Schema' attribute. + * + *

    + * If the meaning of the 'Schema' attribute isn't clear, + * there really should be more of a description here... + *

    + * + * @return the value of the 'Schema' 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 'Specified Schema' attribute. + * + *

    + * If the meaning of the 'Specified Schema' attribute isn't clear, + * there really should be more of a description here... + *

    + * + * @return the value of the 'Specified Schema' 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 Specified Schema}' attribute. + * + * + * @param value the new value of the 'Specified Schema' attribute. + * @see #getSpecifiedSchema() + * @generated + */ + void setSpecifiedSchema(String value); + + /** + * Returns the value of the 'Default Schema' attribute. + * + *

    + * If the meaning of the 'Default Schema' attribute isn't clear, + * there really should be more of a description here... + *

    + * + * @return the value of the 'Default Schema' attribute. + * @see org.eclipse.jpt.core.internal.mappings.JpaCoreMappingsPackage#getITable_DefaultSchema() + * @model changeable="false" + * @generated + */ + String getDefaultSchema(); + + /** + * Returns the value of the 'Specified Name' attribute. + * + *

    + * If the meaning of the 'Specified Name' attribute isn't clear, + * there really should be more of a description here... + *

    + * + * @return the value of the 'Specified Name' 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 Specified Name}' attribute. + * + * + * @param value the new value of the 'Specified Name' 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; + +/** + * + * A representation of the model object 'ITable Generator'. + * + * + *

    + * The following features are supported: + *

      + *
    • {@link org.eclipse.jpt.core.internal.mappings.ITableGenerator#getTable Table}
    • + *
    • {@link org.eclipse.jpt.core.internal.mappings.ITableGenerator#getSpecifiedTable Specified Table}
    • + *
    • {@link org.eclipse.jpt.core.internal.mappings.ITableGenerator#getDefaultTable Default Table}
    • + *
    • {@link org.eclipse.jpt.core.internal.mappings.ITableGenerator#getCatalog Catalog}
    • + *
    • {@link org.eclipse.jpt.core.internal.mappings.ITableGenerator#getSpecifiedCatalog Specified Catalog}
    • + *
    • {@link org.eclipse.jpt.core.internal.mappings.ITableGenerator#getDefaultCatalog Default Catalog}
    • + *
    • {@link org.eclipse.jpt.core.internal.mappings.ITableGenerator#getSchema Schema}
    • + *
    • {@link org.eclipse.jpt.core.internal.mappings.ITableGenerator#getSpecifiedSchema Specified Schema}
    • + *
    • {@link org.eclipse.jpt.core.internal.mappings.ITableGenerator#getDefaultSchema Default Schema}
    • + *
    • {@link org.eclipse.jpt.core.internal.mappings.ITableGenerator#getPkColumnName Pk Column Name}
    • + *
    • {@link org.eclipse.jpt.core.internal.mappings.ITableGenerator#getSpecifiedPkColumnName Specified Pk Column Name}
    • + *
    • {@link org.eclipse.jpt.core.internal.mappings.ITableGenerator#getDefaultPkColumnName Default Pk Column Name}
    • + *
    • {@link org.eclipse.jpt.core.internal.mappings.ITableGenerator#getValueColumnName Value Column Name}
    • + *
    • {@link org.eclipse.jpt.core.internal.mappings.ITableGenerator#getSpecifiedValueColumnName Specified Value Column Name}
    • + *
    • {@link org.eclipse.jpt.core.internal.mappings.ITableGenerator#getDefaultValueColumnName Default Value Column Name}
    • + *
    • {@link org.eclipse.jpt.core.internal.mappings.ITableGenerator#getPkColumnValue Pk Column Value}
    • + *
    • {@link org.eclipse.jpt.core.internal.mappings.ITableGenerator#getSpecifiedPkColumnValue Specified Pk Column Value}
    • + *
    • {@link org.eclipse.jpt.core.internal.mappings.ITableGenerator#getDefaultPkColumnValue Default Pk Column Value}
    • + *
    + *

    + * + * @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 'Table' attribute. + * + *

    + * If the meaning of the 'Table' attribute isn't clear, + * there really should be more of a description here... + *

    + * + * @return the value of the 'Table' 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 'Specified Table' attribute. + * + *

    + * If the meaning of the 'Specified Table' attribute isn't clear, + * there really should be more of a description here... + *

    + * + * @return the value of the 'Specified Table' 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 Specified Table}' attribute. + * + * + * @param value the new value of the 'Specified Table' attribute. + * @see #getSpecifiedTable() + * @generated + */ + void setSpecifiedTable(String value); + + /** + * Returns the value of the 'Default Table' attribute. + * + *

    + * If the meaning of the 'Default Table' attribute isn't clear, + * there really should be more of a description here... + *

    + * + * @return the value of the 'Default Table' attribute. + * @see org.eclipse.jpt.core.internal.mappings.JpaCoreMappingsPackage#getITableGenerator_DefaultTable() + * @model changeable="false" + * @generated + */ + String getDefaultTable(); + + /** + * Returns the value of the 'Catalog' attribute. + * + *

    + * If the meaning of the 'Catalog' attribute isn't clear, + * there really should be more of a description here... + *

    + * + * @return the value of the 'Catalog' 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 'Specified Catalog' attribute. + * + *

    + * If the meaning of the 'Specified Catalog' attribute isn't clear, + * there really should be more of a description here... + *

    + * + * @return the value of the 'Specified Catalog' 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 Specified Catalog}' attribute. + * + * + * @param value the new value of the 'Specified Catalog' attribute. + * @see #getSpecifiedCatalog() + * @generated + */ + void setSpecifiedCatalog(String value); + + /** + * Returns the value of the 'Default Catalog' attribute. + * + *

    + * If the meaning of the 'Default Catalog' attribute isn't clear, + * there really should be more of a description here... + *

    + * + * @return the value of the 'Default Catalog' attribute. + * @see org.eclipse.jpt.core.internal.mappings.JpaCoreMappingsPackage#getITableGenerator_DefaultCatalog() + * @model changeable="false" + * @generated + */ + String getDefaultCatalog(); + + /** + * Returns the value of the 'Schema' attribute. + * + *

    + * If the meaning of the 'Schema' attribute isn't clear, + * there really should be more of a description here... + *

    + * + * @return the value of the 'Schema' 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 'Specified Schema' attribute. + * + *

    + * If the meaning of the 'Specified Schema' attribute isn't clear, + * there really should be more of a description here... + *

    + * + * @return the value of the 'Specified Schema' 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 Specified Schema}' attribute. + * + * + * @param value the new value of the 'Specified Schema' attribute. + * @see #getSpecifiedSchema() + * @generated + */ + void setSpecifiedSchema(String value); + + /** + * Returns the value of the 'Default Schema' attribute. + * + *

    + * If the meaning of the 'Default Schema' attribute isn't clear, + * there really should be more of a description here... + *

    + * + * @return the value of the 'Default Schema' attribute. + * @see org.eclipse.jpt.core.internal.mappings.JpaCoreMappingsPackage#getITableGenerator_DefaultSchema() + * @model changeable="false" + * @generated + */ + String getDefaultSchema(); + + /** + * Returns the value of the 'Pk Column Name' attribute. + * + *

    + * If the meaning of the 'Pk Column Name' attribute isn't clear, + * there really should be more of a description here... + *

    + * + * @return the value of the 'Pk Column Name' 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 'Specified Pk Column Name' attribute. + * + *

    + * If the meaning of the 'Specified Pk Column Name' attribute isn't clear, + * there really should be more of a description here... + *

    + * + * @return the value of the 'Specified Pk Column Name' 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 Specified Pk Column Name}' attribute. + * + * + * @param value the new value of the 'Specified Pk Column Name' attribute. + * @see #getSpecifiedPkColumnName() + * @generated + */ + void setSpecifiedPkColumnName(String value); + + /** + * Returns the value of the 'Default Pk Column Name' attribute. + * + *

    + * If the meaning of the 'Default Pk Column Name' attribute isn't clear, + * there really should be more of a description here... + *

    + * + * @return the value of the 'Default Pk Column Name' attribute. + * @see org.eclipse.jpt.core.internal.mappings.JpaCoreMappingsPackage#getITableGenerator_DefaultPkColumnName() + * @model changeable="false" + * @generated + */ + String getDefaultPkColumnName(); + + /** + * Returns the value of the 'Value Column Name' attribute. + * + *

    + * If the meaning of the 'Value Column Name' attribute isn't clear, + * there really should be more of a description here... + *

    + * + * @return the value of the 'Value Column Name' 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 'Specified Value Column Name' attribute. + * + *

    + * If the meaning of the 'Specified Value Column Name' attribute isn't clear, + * there really should be more of a description here... + *

    + * + * @return the value of the 'Specified Value Column Name' 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 Specified Value Column Name}' attribute. + * + * + * @param value the new value of the 'Specified Value Column Name' attribute. + * @see #getSpecifiedValueColumnName() + * @generated + */ + void setSpecifiedValueColumnName(String value); + + /** + * Returns the value of the 'Default Value Column Name' attribute. + * + *

    + * If the meaning of the 'Default Value Column Name' attribute isn't clear, + * there really should be more of a description here... + *

    + * + * @return the value of the 'Default Value Column Name' attribute. + * @see org.eclipse.jpt.core.internal.mappings.JpaCoreMappingsPackage#getITableGenerator_DefaultValueColumnName() + * @model changeable="false" + * @generated + */ + String getDefaultValueColumnName(); + + /** + * Returns the value of the 'Pk Column Value' attribute. + * + *

    + * If the meaning of the 'Pk Column Value' attribute isn't clear, + * there really should be more of a description here... + *

    + * + * @return the value of the 'Pk Column Value' 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 'Specified Pk Column Value' attribute. + * + *

    + * If the meaning of the 'Specified Pk Column Value' attribute isn't clear, + * there really should be more of a description here... + *

    + * + * @return the value of the 'Specified Pk Column Value' 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 Specified Pk Column Value}' attribute. + * + * + * @param value the new value of the 'Specified Pk Column Value' attribute. + * @see #getSpecifiedPkColumnValue() + * @generated + */ + void setSpecifiedPkColumnValue(String value); + + /** + * Returns the value of the 'Default Pk Column Value' attribute. + * + *

    + * If the meaning of the 'Default Pk Column Value' attribute isn't clear, + * there really should be more of a description here... + *

    + * + * @return the value of the 'Default Pk Column Value' 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; + +/** + * + * A representation of the model object 'ITransient'. + * + * + * + * @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; + +/** + * + * A representation of the model object 'IVersion'. + * + * + *

    + * The following features are supported: + *

      + *
    • {@link org.eclipse.jpt.core.internal.mappings.IVersion#getColumn Column}
    • + *
    • {@link org.eclipse.jpt.core.internal.mappings.IVersion#getTemporal Temporal}
    • + *
    + *

    + * + * @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 'Column' containment reference. + * + *

    + * If the meaning of the 'Column' containment reference isn't clear, + * there really should be more of a description here... + *

    + * + * @return the value of the 'Column' 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 'Temporal' attribute. + * The literals are from the enumeration {@link org.eclipse.jpt.core.internal.mappings.TemporalType}. + * + *

    + * If the meaning of the 'Temporal' attribute isn't clear, + * there really should be more of a description here... + *

    + * + * @return the value of the 'Temporal' 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 Temporal}' attribute. + * + * + * @param value the new value of the 'Temporal' 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; + +/** + * + * A representation of the literals of the enumeration 'Inheritance Type', + * and utility methods for working with them. + * + * @see org.eclipse.jpt.core.internal.mappings.JpaCoreMappingsPackage#getInheritanceType() + * @model + * @generated + */ +public enum InheritanceType implements Enumerator { + /** + * The 'Default' literal object. + * + * + * @see #DEFAULT_VALUE + * @generated + * @ordered + */ + DEFAULT(0, "Default", "Default (Single Table)"), + /** + * The 'SINGLE TABLE' literal object. + * + * + * @see #SINGLE_TABLE_VALUE + * @generated + * @ordered + */ + SINGLE_TABLE(1, "SINGLE_TABLE", "Single Table"), + /** + * The 'JOINED' literal object. + * + * + * @see #JOINED_VALUE + * @generated + * @ordered + */ + JOINED(2, "JOINED", "Joined"), + /** + * The 'TABLE PER CLASS' literal object. + * + * + * @see #TABLE_PER_CLASS_VALUE + * @generated + * @ordered + */ + TABLE_PER_CLASS(3, "TABLE_PER_CLASS", "Table per Class"); + /** + * The 'Default' literal value. + * + *

    + * If the meaning of 'Default' literal object isn't clear, + * there really should be more of a description here... + *

    + * + * @see #DEFAULT + * @model name="Default" literal="Default (Single Table)" + * @generated + * @ordered + */ + public static final int DEFAULT_VALUE = 0; + + /** + * The 'SINGLE TABLE' literal value. + * + *

    + * If the meaning of 'Single Table' literal object isn't clear, + * there really should be more of a description here... + *

    + * + * @see #SINGLE_TABLE + * @model literal="Single Table" + * @generated + * @ordered + */ + public static final int SINGLE_TABLE_VALUE = 1; + + /** + * The 'JOINED' literal value. + * + *

    + * If the meaning of 'Joined' literal object isn't clear, + * there really should be more of a description here... + *

    + * + * @see #JOINED + * @model literal="Joined" + * @generated + * @ordered + */ + public static final int JOINED_VALUE = 2; + + /** + * The 'TABLE PER CLASS' literal value. + * + *

    + * If the meaning of 'Table Per Class' literal object isn't clear, + * there really should be more of a description here... + *

    + * + * @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 'Inheritance Type' enumerators. + * + * + * @generated + */ + private static final InheritanceType[] VALUES_ARRAY = new InheritanceType[] { + DEFAULT, SINGLE_TABLE, JOINED, TABLE_PER_CLASS, + }; + + /** + * A public read-only list of all the 'Inheritance Type' enumerators. + * + * + * @generated + */ + public static final List VALUES = Collections.unmodifiableList(Arrays.asList(VALUES_ARRAY)); + + /** + * Returns the 'Inheritance Type' literal with the specified literal value. + * + * + * @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 'Inheritance Type' literal with the specified name. + * + * + * @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 'Inheritance Type' literal with the specified integer value. + * + * + * @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; + } + + /** + * + * + * @generated + */ + private final int value; + + /** + * + * + * @generated + */ + private final String name; + + /** + * + * + * @generated + */ + private final String literal; + + /** + * Only this class can construct instances. + * + * + * @generated + */ + private InheritanceType(int value, String name, String literal) { + this.value = value; + this.name = name; + this.literal = literal; + } + + /** + * + * + * @generated + */ + public int getValue() { + return value; + } + + /** + * + * + * @generated + */ + public String getName() { + return name; + } + + /** + * + * + * @generated + */ + public String getLiteral() { + return literal; + } + + /** + * Returns the literal value of the enumerator, which is its string representation. + * + * + * @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; + +/** + * + * An implementation of the model Factory. + * + * @see org.eclipse.jpt.core.internal.mappings.JpaCoreMappingsPackage + * @generated + */ +public class JpaCoreMappingsFactory extends EFactoryImpl +{ + /** + * The singleton instance of the factory. + * + * + * @generated + */ + public static final JpaCoreMappingsFactory eINSTANCE = init(); + + /** + * Creates the default factory implementation. + * + * + * @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. + * + * + * @generated + */ + public JpaCoreMappingsFactory() { + super(); + } + + /** + * + * + * @generated + */ + @Override + public EObject create(EClass eClass) { + switch (eClass.getClassifierID()) { + default : + throw new IllegalArgumentException("The class '" + eClass.getName() + "' is not a valid classifier"); + } + } + + /** + * + * + * @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"); + } + } + + /** + * + * + * @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"); + } + } + + /** + * + * + * @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; + } + + /** + * + * + * @generated + */ + public String convertDefaultEagerFetchTypeToString(EDataType eDataType, Object instanceValue) { + return instanceValue == null ? null : instanceValue.toString(); + } + + /** + * + * + * @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; + } + + /** + * + * + * @generated + */ + public String convertDefaultLazyFetchTypeToString(EDataType eDataType, Object instanceValue) { + return instanceValue == null ? null : instanceValue.toString(); + } + + /** + * + * + * @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; + } + + /** + * + * + * @generated + */ + public String convertDefaultFalseBooleanToString(EDataType eDataType, Object instanceValue) { + return instanceValue == null ? null : instanceValue.toString(); + } + + /** + * + * + * @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; + } + + /** + * + * + * @generated + */ + public String convertDefaultTrueBooleanToString(EDataType eDataType, Object instanceValue) { + return instanceValue == null ? null : instanceValue.toString(); + } + + /** + * + * + * @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; + } + + /** + * + * + * @generated + */ + public String convertTemporalTypeToString(EDataType eDataType, Object instanceValue) { + return instanceValue == null ? null : instanceValue.toString(); + } + + /** + * + * + * @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; + } + + /** + * + * + * @generated + */ + public String convertInheritanceTypeToString(EDataType eDataType, Object instanceValue) { + return instanceValue == null ? null : instanceValue.toString(); + } + + /** + * + * + * @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; + } + + /** + * + * + * @generated + */ + public String convertDiscriminatorTypeToString(EDataType eDataType, Object instanceValue) { + return instanceValue == null ? null : instanceValue.toString(); + } + + /** + * + * + * @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; + } + + /** + * + * + * @generated + */ + public String convertGenerationTypeToString(EDataType eDataType, Object instanceValue) { + return instanceValue == null ? null : instanceValue.toString(); + } + + /** + * + * + * @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; + } + + /** + * + * + * @generated + */ + public String convertEnumTypeToString(EDataType eDataType, Object instanceValue) { + return instanceValue == null ? null : instanceValue.toString(); + } + + /** + * + * + * @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; + } + + /** + * + * + * @generated + */ + public String convertOrderingTypeToString(EDataType eDataType, Object instanceValue) { + return instanceValue == null ? null : instanceValue.toString(); + } + + /** + * + * + * @generated + */ + public JpaCoreMappingsPackage getJpaCoreMappingsPackage() { + return (JpaCoreMappingsPackage) getEPackage(); + } + + /** + * + * + * @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; + +/** + * + * The Package for the model. + * It contains accessors for the meta objects to represent + *
      + *
    • each class,
    • + *
    • each feature of each class,
    • + *
    • each enum,
    • + *
    • and each data type
    • + *
    + * + * @see org.eclipse.jpt.core.internal.mappings.JpaCoreMappingsFactory + * @model kind="package" + * @generated + */ +public class JpaCoreMappingsPackage extends EPackageImpl +{ + /** + * The package name. + * + * + * @generated + */ + public static final String eNAME = "mappings"; + + /** + * The package namespace URI. + * + * + * @generated + */ + public static final String eNS_URI = "jpt.core.mappings.xmi"; + + /** + * The package namespace name. + * + * + * @generated + */ + public static final String eNS_PREFIX = "jpt.core.mappings"; + + /** + * The singleton instance of the package. + * + * + * @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 IMapped Superclass}' class. + * + * + * @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 'Name' attribute. + * + * + * @generated + * @ordered + */ + public static final int IMAPPED_SUPERCLASS__NAME = JpaCorePackage.ITYPE_MAPPING__NAME; + + /** + * The feature id for the 'Table Name' attribute. + * + * + * @generated + * @ordered + */ + public static final int IMAPPED_SUPERCLASS__TABLE_NAME = JpaCorePackage.ITYPE_MAPPING__TABLE_NAME; + + /** + * The number of structural features of the 'IMapped Superclass' class. + * + * + * @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 IEntity}' class. + * + * + * @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 'Name' attribute. + * + * + * @generated + * @ordered + */ + public static final int IENTITY__NAME = JpaCorePackage.ITYPE_MAPPING__NAME; + + /** + * The feature id for the 'Table Name' attribute. + * + * + * @generated + * @ordered + */ + public static final int IENTITY__TABLE_NAME = JpaCorePackage.ITYPE_MAPPING__TABLE_NAME; + + /** + * The feature id for the 'Specified Name' attribute. + * + * + * @generated + * @ordered + */ + public static final int IENTITY__SPECIFIED_NAME = JpaCorePackage.ITYPE_MAPPING_FEATURE_COUNT + 0; + + /** + * The feature id for the 'Default Name' attribute. + * + * + * @generated + * @ordered + */ + public static final int IENTITY__DEFAULT_NAME = JpaCorePackage.ITYPE_MAPPING_FEATURE_COUNT + 1; + + /** + * The feature id for the 'Table' containment reference. + * + * + * @generated + * @ordered + */ + public static final int IENTITY__TABLE = JpaCorePackage.ITYPE_MAPPING_FEATURE_COUNT + 2; + + /** + * The feature id for the 'Primary Key Join Columns' containment reference list. + * + * + * @generated + * @ordered + */ + public static final int IENTITY__PRIMARY_KEY_JOIN_COLUMNS = JpaCorePackage.ITYPE_MAPPING_FEATURE_COUNT + 3; + + /** + * The feature id for the 'Specified Primary Key Join Columns' containment reference list. + * + * + * @generated + * @ordered + */ + public static final int IENTITY__SPECIFIED_PRIMARY_KEY_JOIN_COLUMNS = JpaCorePackage.ITYPE_MAPPING_FEATURE_COUNT + 4; + + /** + * The feature id for the 'Default Primary Key Join Columns' containment reference list. + * + * + * @generated + * @ordered + */ + public static final int IENTITY__DEFAULT_PRIMARY_KEY_JOIN_COLUMNS = JpaCorePackage.ITYPE_MAPPING_FEATURE_COUNT + 5; + + /** + * The feature id for the 'Inheritance Strategy' attribute. + * + * + * @generated + * @ordered + */ + public static final int IENTITY__INHERITANCE_STRATEGY = JpaCorePackage.ITYPE_MAPPING_FEATURE_COUNT + 6; + + /** + * The feature id for the 'Default Discriminator Value' attribute. + * + * + * @generated + * @ordered + */ + public static final int IENTITY__DEFAULT_DISCRIMINATOR_VALUE = JpaCorePackage.ITYPE_MAPPING_FEATURE_COUNT + 7; + + /** + * The feature id for the 'Specified Discriminator Value' attribute. + * + * + * @generated + * @ordered + */ + public static final int IENTITY__SPECIFIED_DISCRIMINATOR_VALUE = JpaCorePackage.ITYPE_MAPPING_FEATURE_COUNT + 8; + + /** + * The feature id for the 'Discriminator Value' attribute. + * + * + * @generated + * @ordered + */ + public static final int IENTITY__DISCRIMINATOR_VALUE = JpaCorePackage.ITYPE_MAPPING_FEATURE_COUNT + 9; + + /** + * The feature id for the 'Discriminator Column' containment reference. + * + * + * @generated + * @ordered + */ + public static final int IENTITY__DISCRIMINATOR_COLUMN = JpaCorePackage.ITYPE_MAPPING_FEATURE_COUNT + 10; + + /** + * The feature id for the 'Sequence Generator' containment reference. + * + * + * @generated + * @ordered + */ + public static final int IENTITY__SEQUENCE_GENERATOR = JpaCorePackage.ITYPE_MAPPING_FEATURE_COUNT + 11; + + /** + * The feature id for the 'Table Generator' containment reference. + * + * + * @generated + * @ordered + */ + public static final int IENTITY__TABLE_GENERATOR = JpaCorePackage.ITYPE_MAPPING_FEATURE_COUNT + 12; + + /** + * The feature id for the 'Attribute Overrides' containment reference list. + * + * + * @generated + * @ordered + */ + public static final int IENTITY__ATTRIBUTE_OVERRIDES = JpaCorePackage.ITYPE_MAPPING_FEATURE_COUNT + 13; + + /** + * The feature id for the 'Specified Attribute Overrides' containment reference list. + * + * + * @generated + * @ordered + */ + public static final int IENTITY__SPECIFIED_ATTRIBUTE_OVERRIDES = JpaCorePackage.ITYPE_MAPPING_FEATURE_COUNT + 14; + + /** + * The feature id for the 'Default Attribute Overrides' containment reference list. + * + * + * @generated + * @ordered + */ + public static final int IENTITY__DEFAULT_ATTRIBUTE_OVERRIDES = JpaCorePackage.ITYPE_MAPPING_FEATURE_COUNT + 15; + + /** + * The feature id for the 'Association Overrides' containment reference list. + * + * + * @generated + * @ordered + */ + public static final int IENTITY__ASSOCIATION_OVERRIDES = JpaCorePackage.ITYPE_MAPPING_FEATURE_COUNT + 16; + + /** + * The feature id for the 'Specified Association Overrides' containment reference list. + * + * + * @generated + * @ordered + */ + public static final int IENTITY__SPECIFIED_ASSOCIATION_OVERRIDES = JpaCorePackage.ITYPE_MAPPING_FEATURE_COUNT + 17; + + /** + * The feature id for the 'Default Association Overrides' containment reference list. + * + * + * @generated + * @ordered + */ + public static final int IENTITY__DEFAULT_ASSOCIATION_OVERRIDES = JpaCorePackage.ITYPE_MAPPING_FEATURE_COUNT + 18; + + /** + * The feature id for the 'Named Queries' containment reference list. + * + * + * @generated + * @ordered + */ + public static final int IENTITY__NAMED_QUERIES = JpaCorePackage.ITYPE_MAPPING_FEATURE_COUNT + 19; + + /** + * The feature id for the 'Named Native Queries' containment reference list. + * + * + * @generated + * @ordered + */ + public static final int IENTITY__NAMED_NATIVE_QUERIES = JpaCorePackage.ITYPE_MAPPING_FEATURE_COUNT + 20; + + /** + * The number of structural features of the 'IEntity' class. + * + * + * @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 IEmbeddable}' class. + * + * + * @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 'Name' attribute. + * + * + * @generated + * @ordered + */ + public static final int IEMBEDDABLE__NAME = JpaCorePackage.ITYPE_MAPPING__NAME; + + /** + * The feature id for the 'Table Name' attribute. + * + * + * @generated + * @ordered + */ + public static final int IEMBEDDABLE__TABLE_NAME = JpaCorePackage.ITYPE_MAPPING__TABLE_NAME; + + /** + * The number of structural features of the 'IEmbeddable' class. + * + * + * @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 ITable}' class. + * + * + * @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 'Name' attribute. + * + * + * @generated + * @ordered + */ + public static final int ITABLE__NAME = JpaCorePackage.IJPA_SOURCE_OBJECT_FEATURE_COUNT + 0; + + /** + * The feature id for the 'Specified Name' attribute. + * + * + * @generated + * @ordered + */ + public static final int ITABLE__SPECIFIED_NAME = JpaCorePackage.IJPA_SOURCE_OBJECT_FEATURE_COUNT + 1; + + /** + * The feature id for the 'Default Name' attribute. + * + * + * @generated + * @ordered + */ + public static final int ITABLE__DEFAULT_NAME = JpaCorePackage.IJPA_SOURCE_OBJECT_FEATURE_COUNT + 2; + + /** + * The feature id for the 'Catalog' attribute. + * + * + * @generated + * @ordered + */ + public static final int ITABLE__CATALOG = JpaCorePackage.IJPA_SOURCE_OBJECT_FEATURE_COUNT + 3; + + /** + * The feature id for the 'Specified Catalog' attribute. + * + * + * @generated + * @ordered + */ + public static final int ITABLE__SPECIFIED_CATALOG = JpaCorePackage.IJPA_SOURCE_OBJECT_FEATURE_COUNT + 4; + + /** + * The feature id for the 'Default Catalog' attribute. + * + * + * @generated + * @ordered + */ + public static final int ITABLE__DEFAULT_CATALOG = JpaCorePackage.IJPA_SOURCE_OBJECT_FEATURE_COUNT + 5; + + /** + * The feature id for the 'Schema' attribute. + * + * + * @generated + * @ordered + */ + public static final int ITABLE__SCHEMA = JpaCorePackage.IJPA_SOURCE_OBJECT_FEATURE_COUNT + 6; + + /** + * The feature id for the 'Specified Schema' attribute. + * + * + * @generated + * @ordered + */ + public static final int ITABLE__SPECIFIED_SCHEMA = JpaCorePackage.IJPA_SOURCE_OBJECT_FEATURE_COUNT + 7; + + /** + * The feature id for the 'Default Schema' attribute. + * + * + * @generated + * @ordered + */ + public static final int ITABLE__DEFAULT_SCHEMA = JpaCorePackage.IJPA_SOURCE_OBJECT_FEATURE_COUNT + 8; + + /** + * The number of structural features of the 'ITable' class. + * + * + * @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 INamed Column}' class. + * + * + * @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 'Name' attribute. + * + * + * @generated + * @ordered + */ + public static final int INAMED_COLUMN__NAME = JpaCorePackage.IJPA_SOURCE_OBJECT_FEATURE_COUNT + 0; + + /** + * The feature id for the 'Specified Name' attribute. + * + * + * @generated + * @ordered + */ + public static final int INAMED_COLUMN__SPECIFIED_NAME = JpaCorePackage.IJPA_SOURCE_OBJECT_FEATURE_COUNT + 1; + + /** + * The feature id for the 'Default Name' attribute. + * + * + * @generated + * @ordered + */ + public static final int INAMED_COLUMN__DEFAULT_NAME = JpaCorePackage.IJPA_SOURCE_OBJECT_FEATURE_COUNT + 2; + + /** + * The feature id for the 'Column Definition' attribute. + * + * + * @generated + * @ordered + */ + public static final int INAMED_COLUMN__COLUMN_DEFINITION = JpaCorePackage.IJPA_SOURCE_OBJECT_FEATURE_COUNT + 3; + + /** + * The number of structural features of the 'INamed Column' class. + * + * + * @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 IAbstract Column}' class. + * + * + * @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 'Name' attribute. + * + * + * @generated + * @ordered + */ + public static final int IABSTRACT_COLUMN__NAME = INAMED_COLUMN__NAME; + + /** + * The feature id for the 'Specified Name' attribute. + * + * + * @generated + * @ordered + */ + public static final int IABSTRACT_COLUMN__SPECIFIED_NAME = INAMED_COLUMN__SPECIFIED_NAME; + + /** + * The feature id for the 'Default Name' attribute. + * + * + * @generated + * @ordered + */ + public static final int IABSTRACT_COLUMN__DEFAULT_NAME = INAMED_COLUMN__DEFAULT_NAME; + + /** + * The feature id for the 'Column Definition' attribute. + * + * + * @generated + * @ordered + */ + public static final int IABSTRACT_COLUMN__COLUMN_DEFINITION = INAMED_COLUMN__COLUMN_DEFINITION; + + /** + * The feature id for the 'Unique' attribute. + * + * + * @generated + * @ordered + */ + public static final int IABSTRACT_COLUMN__UNIQUE = INAMED_COLUMN_FEATURE_COUNT + 0; + + /** + * The feature id for the 'Nullable' attribute. + * + * + * @generated + * @ordered + */ + public static final int IABSTRACT_COLUMN__NULLABLE = INAMED_COLUMN_FEATURE_COUNT + 1; + + /** + * The feature id for the 'Insertable' attribute. + * + * + * @generated + * @ordered + */ + public static final int IABSTRACT_COLUMN__INSERTABLE = INAMED_COLUMN_FEATURE_COUNT + 2; + + /** + * The feature id for the 'Updatable' attribute. + * + * + * @generated + * @ordered + */ + public static final int IABSTRACT_COLUMN__UPDATABLE = INAMED_COLUMN_FEATURE_COUNT + 3; + + /** + * The feature id for the 'Table' attribute. + * + * + * @generated + * @ordered + */ + public static final int IABSTRACT_COLUMN__TABLE = INAMED_COLUMN_FEATURE_COUNT + 4; + + /** + * The feature id for the 'Specified Table' attribute. + * + * + * @generated + * @ordered + */ + public static final int IABSTRACT_COLUMN__SPECIFIED_TABLE = INAMED_COLUMN_FEATURE_COUNT + 5; + + /** + * The feature id for the 'Default Table' attribute. + * + * + * @generated + * @ordered + */ + public static final int IABSTRACT_COLUMN__DEFAULT_TABLE = INAMED_COLUMN_FEATURE_COUNT + 6; + + /** + * The number of structural features of the 'IAbstract Column' class. + * + * + * @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 IColumn}' class. + * + * + * @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 'Name' attribute. + * + * + * @generated + * @ordered + */ + public static final int ICOLUMN__NAME = IABSTRACT_COLUMN__NAME; + + /** + * The feature id for the 'Specified Name' attribute. + * + * + * @generated + * @ordered + */ + public static final int ICOLUMN__SPECIFIED_NAME = IABSTRACT_COLUMN__SPECIFIED_NAME; + + /** + * The feature id for the 'Default Name' attribute. + * + * + * @generated + * @ordered + */ + public static final int ICOLUMN__DEFAULT_NAME = IABSTRACT_COLUMN__DEFAULT_NAME; + + /** + * The feature id for the 'Column Definition' attribute. + * + * + * @generated + * @ordered + */ + public static final int ICOLUMN__COLUMN_DEFINITION = IABSTRACT_COLUMN__COLUMN_DEFINITION; + + /** + * The feature id for the 'Unique' attribute. + * + * + * @generated + * @ordered + */ + public static final int ICOLUMN__UNIQUE = IABSTRACT_COLUMN__UNIQUE; + + /** + * The feature id for the 'Nullable' attribute. + * + * + * @generated + * @ordered + */ + public static final int ICOLUMN__NULLABLE = IABSTRACT_COLUMN__NULLABLE; + + /** + * The feature id for the 'Insertable' attribute. + * + * + * @generated + * @ordered + */ + public static final int ICOLUMN__INSERTABLE = IABSTRACT_COLUMN__INSERTABLE; + + /** + * The feature id for the 'Updatable' attribute. + * + * + * @generated + * @ordered + */ + public static final int ICOLUMN__UPDATABLE = IABSTRACT_COLUMN__UPDATABLE; + + /** + * The feature id for the 'Table' attribute. + * + * + * @generated + * @ordered + */ + public static final int ICOLUMN__TABLE = IABSTRACT_COLUMN__TABLE; + + /** + * The feature id for the 'Specified Table' attribute. + * + * + * @generated + * @ordered + */ + public static final int ICOLUMN__SPECIFIED_TABLE = IABSTRACT_COLUMN__SPECIFIED_TABLE; + + /** + * The feature id for the 'Default Table' attribute. + * + * + * @generated + * @ordered + */ + public static final int ICOLUMN__DEFAULT_TABLE = IABSTRACT_COLUMN__DEFAULT_TABLE; + + /** + * The feature id for the 'Length' attribute. + * + * + * @generated + * @ordered + */ + public static final int ICOLUMN__LENGTH = IABSTRACT_COLUMN_FEATURE_COUNT + 0; + + /** + * The feature id for the 'Precision' attribute. + * + * + * @generated + * @ordered + */ + public static final int ICOLUMN__PRECISION = IABSTRACT_COLUMN_FEATURE_COUNT + 1; + + /** + * The feature id for the 'Scale' attribute. + * + * + * @generated + * @ordered + */ + public static final int ICOLUMN__SCALE = IABSTRACT_COLUMN_FEATURE_COUNT + 2; + + /** + * The number of structural features of the 'IColumn' class. + * + * + * @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 IColumn Mapping}' class. + * + * + * @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 'IColumn Mapping' class. + * + * + * @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 IBasic}' class. + * + * + * @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 'Fetch' attribute. + * + * + * @generated + * @ordered + */ + public static final int IBASIC__FETCH = JpaCorePackage.IATTRIBUTE_MAPPING_FEATURE_COUNT + 0; + + /** + * The feature id for the 'Optional' attribute. + * + * + * @generated + * @ordered + */ + public static final int IBASIC__OPTIONAL = JpaCorePackage.IATTRIBUTE_MAPPING_FEATURE_COUNT + 1; + + /** + * The feature id for the 'Column' containment reference. + * + * + * @generated + * @ordered + */ + public static final int IBASIC__COLUMN = JpaCorePackage.IATTRIBUTE_MAPPING_FEATURE_COUNT + 2; + + /** + * The feature id for the 'Lob' attribute. + * + * + * @generated + * @ordered + */ + public static final int IBASIC__LOB = JpaCorePackage.IATTRIBUTE_MAPPING_FEATURE_COUNT + 3; + + /** + * The feature id for the 'Temporal' attribute. + * + * + * @generated + * @ordered + */ + public static final int IBASIC__TEMPORAL = JpaCorePackage.IATTRIBUTE_MAPPING_FEATURE_COUNT + 4; + + /** + * The feature id for the 'Enumerated' attribute. + * + * + * @generated + * @ordered + */ + public static final int IBASIC__ENUMERATED = JpaCorePackage.IATTRIBUTE_MAPPING_FEATURE_COUNT + 5; + + /** + * The number of structural features of the 'IBasic' class. + * + * + * @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 IId}' class. + * + * + * @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 'Column' containment reference. + * + * + * @generated + * @ordered + */ + public static final int IID__COLUMN = JpaCorePackage.IATTRIBUTE_MAPPING_FEATURE_COUNT + 0; + + /** + * The feature id for the 'Generated Value' containment reference. + * + * + * @generated + * @ordered + */ + public static final int IID__GENERATED_VALUE = JpaCorePackage.IATTRIBUTE_MAPPING_FEATURE_COUNT + 1; + + /** + * The feature id for the 'Temporal' attribute. + * + * + * @generated + * @ordered + */ + public static final int IID__TEMPORAL = JpaCorePackage.IATTRIBUTE_MAPPING_FEATURE_COUNT + 2; + + /** + * The feature id for the 'Table Generator' containment reference. + * + * + * @generated + * @ordered + */ + public static final int IID__TABLE_GENERATOR = JpaCorePackage.IATTRIBUTE_MAPPING_FEATURE_COUNT + 3; + + /** + * The feature id for the 'Sequence Generator' containment reference. + * + * + * @generated + * @ordered + */ + public static final int IID__SEQUENCE_GENERATOR = JpaCorePackage.IATTRIBUTE_MAPPING_FEATURE_COUNT + 4; + + /** + * The number of structural features of the 'IId' class. + * + * + * @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 ITransient}' class. + * + * + * @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 'ITransient' class. + * + * + * @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 IVersion}' class. + * + * + * @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 'Column' containment reference. + * + * + * @generated + * @ordered + */ + public static final int IVERSION__COLUMN = JpaCorePackage.IATTRIBUTE_MAPPING_FEATURE_COUNT + 0; + + /** + * The feature id for the 'Temporal' attribute. + * + * + * @generated + * @ordered + */ + public static final int IVERSION__TEMPORAL = JpaCorePackage.IATTRIBUTE_MAPPING_FEATURE_COUNT + 1; + + /** + * The number of structural features of the 'IVersion' class. + * + * + * @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 IEmbedded Id}' class. + * + * + * @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 'IEmbedded Id' class. + * + * + * @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 IEmbedded}' class. + * + * + * @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 'Attribute Overrides' containment reference list. + * + * + * @generated + * @ordered + */ + public static final int IEMBEDDED__ATTRIBUTE_OVERRIDES = JpaCorePackage.IATTRIBUTE_MAPPING_FEATURE_COUNT + 0; + + /** + * The feature id for the 'Specified Attribute Overrides' containment reference list. + * + * + * @generated + * @ordered + */ + public static final int IEMBEDDED__SPECIFIED_ATTRIBUTE_OVERRIDES = JpaCorePackage.IATTRIBUTE_MAPPING_FEATURE_COUNT + 1; + + /** + * The feature id for the 'Default Attribute Overrides' containment reference list. + * + * + * @generated + * @ordered + */ + public static final int IEMBEDDED__DEFAULT_ATTRIBUTE_OVERRIDES = JpaCorePackage.IATTRIBUTE_MAPPING_FEATURE_COUNT + 2; + + /** + * The number of structural features of the 'IEmbedded' class. + * + * + * @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 IRelationship Mapping}' class. + * + * + * @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 'Target Entity' attribute. + * + * + * @generated + * @ordered + */ + public static final int IRELATIONSHIP_MAPPING__TARGET_ENTITY = JpaCorePackage.IATTRIBUTE_MAPPING_FEATURE_COUNT + 0; + + /** + * The feature id for the 'Specified Target Entity' attribute. + * + * + * @generated + * @ordered + */ + public static final int IRELATIONSHIP_MAPPING__SPECIFIED_TARGET_ENTITY = JpaCorePackage.IATTRIBUTE_MAPPING_FEATURE_COUNT + 1; + + /** + * The feature id for the 'Default Target Entity' attribute. + * + * + * @generated + * @ordered + */ + public static final int IRELATIONSHIP_MAPPING__DEFAULT_TARGET_ENTITY = JpaCorePackage.IATTRIBUTE_MAPPING_FEATURE_COUNT + 2; + + /** + * The feature id for the 'Resolved Target Entity' reference. + * + * + * @generated + * @ordered + */ + public static final int IRELATIONSHIP_MAPPING__RESOLVED_TARGET_ENTITY = JpaCorePackage.IATTRIBUTE_MAPPING_FEATURE_COUNT + 3; + + /** + * The number of structural features of the 'IRelationship Mapping' class. + * + * + * @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 INon Owning Mapping}' class. + * + * + * @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 'Target Entity' attribute. + * + * + * @generated + * @ordered + */ + public static final int INON_OWNING_MAPPING__TARGET_ENTITY = IRELATIONSHIP_MAPPING__TARGET_ENTITY; + + /** + * The feature id for the 'Specified Target Entity' attribute. + * + * + * @generated + * @ordered + */ + public static final int INON_OWNING_MAPPING__SPECIFIED_TARGET_ENTITY = IRELATIONSHIP_MAPPING__SPECIFIED_TARGET_ENTITY; + + /** + * The feature id for the 'Default Target Entity' attribute. + * + * + * @generated + * @ordered + */ + public static final int INON_OWNING_MAPPING__DEFAULT_TARGET_ENTITY = IRELATIONSHIP_MAPPING__DEFAULT_TARGET_ENTITY; + + /** + * The feature id for the 'Resolved Target Entity' reference. + * + * + * @generated + * @ordered + */ + public static final int INON_OWNING_MAPPING__RESOLVED_TARGET_ENTITY = IRELATIONSHIP_MAPPING__RESOLVED_TARGET_ENTITY; + + /** + * The feature id for the 'Mapped By' attribute. + * + * + * @generated + * @ordered + */ + public static final int INON_OWNING_MAPPING__MAPPED_BY = IRELATIONSHIP_MAPPING_FEATURE_COUNT + 0; + + /** + * The number of structural features of the 'INon Owning Mapping' class. + * + * + * @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 IMulti Relationship Mapping}' class. + * + * + * @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 'Target Entity' attribute. + * + * + * @generated + * @ordered + */ + public static final int IMULTI_RELATIONSHIP_MAPPING__TARGET_ENTITY = INON_OWNING_MAPPING__TARGET_ENTITY; + + /** + * The feature id for the 'Specified Target Entity' attribute. + * + * + * @generated + * @ordered + */ + public static final int IMULTI_RELATIONSHIP_MAPPING__SPECIFIED_TARGET_ENTITY = INON_OWNING_MAPPING__SPECIFIED_TARGET_ENTITY; + + /** + * The feature id for the 'Default Target Entity' attribute. + * + * + * @generated + * @ordered + */ + public static final int IMULTI_RELATIONSHIP_MAPPING__DEFAULT_TARGET_ENTITY = INON_OWNING_MAPPING__DEFAULT_TARGET_ENTITY; + + /** + * The feature id for the 'Resolved Target Entity' reference. + * + * + * @generated + * @ordered + */ + public static final int IMULTI_RELATIONSHIP_MAPPING__RESOLVED_TARGET_ENTITY = INON_OWNING_MAPPING__RESOLVED_TARGET_ENTITY; + + /** + * The feature id for the 'Mapped By' attribute. + * + * + * @generated + * @ordered + */ + public static final int IMULTI_RELATIONSHIP_MAPPING__MAPPED_BY = INON_OWNING_MAPPING__MAPPED_BY; + + /** + * The feature id for the 'Fetch' attribute. + * + * + * @generated + * @ordered + */ + public static final int IMULTI_RELATIONSHIP_MAPPING__FETCH = INON_OWNING_MAPPING_FEATURE_COUNT + 0; + + /** + * The feature id for the 'Join Table' containment reference. + * + * + * @generated + * @ordered + */ + public static final int IMULTI_RELATIONSHIP_MAPPING__JOIN_TABLE = INON_OWNING_MAPPING_FEATURE_COUNT + 1; + + /** + * The feature id for the 'Order By' containment reference. + * + * + * @generated + * @ordered + */ + public static final int IMULTI_RELATIONSHIP_MAPPING__ORDER_BY = INON_OWNING_MAPPING_FEATURE_COUNT + 2; + + /** + * The number of structural features of the 'IMulti Relationship Mapping' class. + * + * + * @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 IOne To Many}' class. + * + * + * @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 'Target Entity' attribute. + * + * + * @generated + * @ordered + */ + public static final int IONE_TO_MANY__TARGET_ENTITY = IMULTI_RELATIONSHIP_MAPPING__TARGET_ENTITY; + + /** + * The feature id for the 'Specified Target Entity' attribute. + * + * + * @generated + * @ordered + */ + public static final int IONE_TO_MANY__SPECIFIED_TARGET_ENTITY = IMULTI_RELATIONSHIP_MAPPING__SPECIFIED_TARGET_ENTITY; + + /** + * The feature id for the 'Default Target Entity' attribute. + * + * + * @generated + * @ordered + */ + public static final int IONE_TO_MANY__DEFAULT_TARGET_ENTITY = IMULTI_RELATIONSHIP_MAPPING__DEFAULT_TARGET_ENTITY; + + /** + * The feature id for the 'Resolved Target Entity' reference. + * + * + * @generated + * @ordered + */ + public static final int IONE_TO_MANY__RESOLVED_TARGET_ENTITY = IMULTI_RELATIONSHIP_MAPPING__RESOLVED_TARGET_ENTITY; + + /** + * The feature id for the 'Mapped By' attribute. + * + * + * @generated + * @ordered + */ + public static final int IONE_TO_MANY__MAPPED_BY = IMULTI_RELATIONSHIP_MAPPING__MAPPED_BY; + + /** + * The feature id for the 'Fetch' attribute. + * + * + * @generated + * @ordered + */ + public static final int IONE_TO_MANY__FETCH = IMULTI_RELATIONSHIP_MAPPING__FETCH; + + /** + * The feature id for the 'Join Table' containment reference. + * + * + * @generated + * @ordered + */ + public static final int IONE_TO_MANY__JOIN_TABLE = IMULTI_RELATIONSHIP_MAPPING__JOIN_TABLE; + + /** + * The feature id for the 'Order By' containment reference. + * + * + * @generated + * @ordered + */ + public static final int IONE_TO_MANY__ORDER_BY = IMULTI_RELATIONSHIP_MAPPING__ORDER_BY; + + /** + * The number of structural features of the 'IOne To Many' class. + * + * + * @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 IMany To Many}' class. + * + * + * @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 'Target Entity' attribute. + * + * + * @generated + * @ordered + */ + public static final int IMANY_TO_MANY__TARGET_ENTITY = IMULTI_RELATIONSHIP_MAPPING__TARGET_ENTITY; + + /** + * The feature id for the 'Specified Target Entity' attribute. + * + * + * @generated + * @ordered + */ + public static final int IMANY_TO_MANY__SPECIFIED_TARGET_ENTITY = IMULTI_RELATIONSHIP_MAPPING__SPECIFIED_TARGET_ENTITY; + + /** + * The feature id for the 'Default Target Entity' attribute. + * + * + * @generated + * @ordered + */ + public static final int IMANY_TO_MANY__DEFAULT_TARGET_ENTITY = IMULTI_RELATIONSHIP_MAPPING__DEFAULT_TARGET_ENTITY; + + /** + * The feature id for the 'Resolved Target Entity' reference. + * + * + * @generated + * @ordered + */ + public static final int IMANY_TO_MANY__RESOLVED_TARGET_ENTITY = IMULTI_RELATIONSHIP_MAPPING__RESOLVED_TARGET_ENTITY; + + /** + * The feature id for the 'Mapped By' attribute. + * + * + * @generated + * @ordered + */ + public static final int IMANY_TO_MANY__MAPPED_BY = IMULTI_RELATIONSHIP_MAPPING__MAPPED_BY; + + /** + * The feature id for the 'Fetch' attribute. + * + * + * @generated + * @ordered + */ + public static final int IMANY_TO_MANY__FETCH = IMULTI_RELATIONSHIP_MAPPING__FETCH; + + /** + * The feature id for the 'Join Table' containment reference. + * + * + * @generated + * @ordered + */ + public static final int IMANY_TO_MANY__JOIN_TABLE = IMULTI_RELATIONSHIP_MAPPING__JOIN_TABLE; + + /** + * The feature id for the 'Order By' containment reference. + * + * + * @generated + * @ordered + */ + public static final int IMANY_TO_MANY__ORDER_BY = IMULTI_RELATIONSHIP_MAPPING__ORDER_BY; + + /** + * The number of structural features of the 'IMany To Many' class. + * + * + * @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 ISingle Relationship Mapping}' class. + * + * + * @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 'Target Entity' attribute. + * + * + * @generated + * @ordered + */ + public static final int ISINGLE_RELATIONSHIP_MAPPING__TARGET_ENTITY = IRELATIONSHIP_MAPPING__TARGET_ENTITY; + + /** + * The feature id for the 'Specified Target Entity' attribute. + * + * + * @generated + * @ordered + */ + public static final int ISINGLE_RELATIONSHIP_MAPPING__SPECIFIED_TARGET_ENTITY = IRELATIONSHIP_MAPPING__SPECIFIED_TARGET_ENTITY; + + /** + * The feature id for the 'Default Target Entity' attribute. + * + * + * @generated + * @ordered + */ + public static final int ISINGLE_RELATIONSHIP_MAPPING__DEFAULT_TARGET_ENTITY = IRELATIONSHIP_MAPPING__DEFAULT_TARGET_ENTITY; + + /** + * The feature id for the 'Resolved Target Entity' reference. + * + * + * @generated + * @ordered + */ + public static final int ISINGLE_RELATIONSHIP_MAPPING__RESOLVED_TARGET_ENTITY = IRELATIONSHIP_MAPPING__RESOLVED_TARGET_ENTITY; + + /** + * The feature id for the 'Fetch' attribute. + * + * + * @generated + * @ordered + */ + public static final int ISINGLE_RELATIONSHIP_MAPPING__FETCH = IRELATIONSHIP_MAPPING_FEATURE_COUNT + 0; + + /** + * The feature id for the 'Join Columns' containment reference list. + * + * + * @generated + * @ordered + */ + public static final int ISINGLE_RELATIONSHIP_MAPPING__JOIN_COLUMNS = IRELATIONSHIP_MAPPING_FEATURE_COUNT + 1; + + /** + * The feature id for the 'Specified Join Columns' containment reference list. + * + * + * @generated + * @ordered + */ + public static final int ISINGLE_RELATIONSHIP_MAPPING__SPECIFIED_JOIN_COLUMNS = IRELATIONSHIP_MAPPING_FEATURE_COUNT + 2; + + /** + * The feature id for the 'Default Join Columns' containment reference list. + * + * + * @generated + * @ordered + */ + public static final int ISINGLE_RELATIONSHIP_MAPPING__DEFAULT_JOIN_COLUMNS = IRELATIONSHIP_MAPPING_FEATURE_COUNT + 3; + + /** + * The number of structural features of the 'ISingle Relationship Mapping' class. + * + * + * @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 IMany To One}' class. + * + * + * @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 'Target Entity' attribute. + * + * + * @generated + * @ordered + */ + public static final int IMANY_TO_ONE__TARGET_ENTITY = ISINGLE_RELATIONSHIP_MAPPING__TARGET_ENTITY; + + /** + * The feature id for the 'Specified Target Entity' attribute. + * + * + * @generated + * @ordered + */ + public static final int IMANY_TO_ONE__SPECIFIED_TARGET_ENTITY = ISINGLE_RELATIONSHIP_MAPPING__SPECIFIED_TARGET_ENTITY; + + /** + * The feature id for the 'Default Target Entity' attribute. + * + * + * @generated + * @ordered + */ + public static final int IMANY_TO_ONE__DEFAULT_TARGET_ENTITY = ISINGLE_RELATIONSHIP_MAPPING__DEFAULT_TARGET_ENTITY; + + /** + * The feature id for the 'Resolved Target Entity' reference. + * + * + * @generated + * @ordered + */ + public static final int IMANY_TO_ONE__RESOLVED_TARGET_ENTITY = ISINGLE_RELATIONSHIP_MAPPING__RESOLVED_TARGET_ENTITY; + + /** + * The feature id for the 'Fetch' attribute. + * + * + * @generated + * @ordered + */ + public static final int IMANY_TO_ONE__FETCH = ISINGLE_RELATIONSHIP_MAPPING__FETCH; + + /** + * The feature id for the 'Join Columns' containment reference list. + * + * + * @generated + * @ordered + */ + public static final int IMANY_TO_ONE__JOIN_COLUMNS = ISINGLE_RELATIONSHIP_MAPPING__JOIN_COLUMNS; + + /** + * The feature id for the 'Specified Join Columns' containment reference list. + * + * + * @generated + * @ordered + */ + public static final int IMANY_TO_ONE__SPECIFIED_JOIN_COLUMNS = ISINGLE_RELATIONSHIP_MAPPING__SPECIFIED_JOIN_COLUMNS; + + /** + * The feature id for the 'Default Join Columns' containment reference list. + * + * + * @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 'IMany To One' class. + * + * + * @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 IOne To One}' class. + * + * + * @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 'Target Entity' attribute. + * + * + * @generated + * @ordered + */ + public static final int IONE_TO_ONE__TARGET_ENTITY = ISINGLE_RELATIONSHIP_MAPPING__TARGET_ENTITY; + + /** + * The feature id for the 'Specified Target Entity' attribute. + * + * + * @generated + * @ordered + */ + public static final int IONE_TO_ONE__SPECIFIED_TARGET_ENTITY = ISINGLE_RELATIONSHIP_MAPPING__SPECIFIED_TARGET_ENTITY; + + /** + * The feature id for the 'Default Target Entity' attribute. + * + * + * @generated + * @ordered + */ + public static final int IONE_TO_ONE__DEFAULT_TARGET_ENTITY = ISINGLE_RELATIONSHIP_MAPPING__DEFAULT_TARGET_ENTITY; + + /** + * The feature id for the 'Resolved Target Entity' reference. + * + * + * @generated + * @ordered + */ + public static final int IONE_TO_ONE__RESOLVED_TARGET_ENTITY = ISINGLE_RELATIONSHIP_MAPPING__RESOLVED_TARGET_ENTITY; + + /** + * The feature id for the 'Fetch' attribute. + * + * + * @generated + * @ordered + */ + public static final int IONE_TO_ONE__FETCH = ISINGLE_RELATIONSHIP_MAPPING__FETCH; + + /** + * The feature id for the 'Join Columns' containment reference list. + * + * + * @generated + * @ordered + */ + public static final int IONE_TO_ONE__JOIN_COLUMNS = ISINGLE_RELATIONSHIP_MAPPING__JOIN_COLUMNS; + + /** + * The feature id for the 'Specified Join Columns' containment reference list. + * + * + * @generated + * @ordered + */ + public static final int IONE_TO_ONE__SPECIFIED_JOIN_COLUMNS = ISINGLE_RELATIONSHIP_MAPPING__SPECIFIED_JOIN_COLUMNS; + + /** + * The feature id for the 'Default Join Columns' containment reference list. + * + * + * @generated + * @ordered + */ + public static final int IONE_TO_ONE__DEFAULT_JOIN_COLUMNS = ISINGLE_RELATIONSHIP_MAPPING__DEFAULT_JOIN_COLUMNS; + + /** + * The feature id for the 'Mapped By' attribute. + * + * + * @generated + * @ordered + */ + public static final int IONE_TO_ONE__MAPPED_BY = ISINGLE_RELATIONSHIP_MAPPING_FEATURE_COUNT + 0; + + /** + * The number of structural features of the 'IOne To One' class. + * + * + * @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 IJoin Table}' class. + * + * + * @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 'Name' attribute. + * + * + * @generated + * @ordered + */ + public static final int IJOIN_TABLE__NAME = ITABLE__NAME; + + /** + * The feature id for the 'Specified Name' attribute. + * + * + * @generated + * @ordered + */ + public static final int IJOIN_TABLE__SPECIFIED_NAME = ITABLE__SPECIFIED_NAME; + + /** + * The feature id for the 'Default Name' attribute. + * + * + * @generated + * @ordered + */ + public static final int IJOIN_TABLE__DEFAULT_NAME = ITABLE__DEFAULT_NAME; + + /** + * The feature id for the 'Catalog' attribute. + * + * + * @generated + * @ordered + */ + public static final int IJOIN_TABLE__CATALOG = ITABLE__CATALOG; + + /** + * The feature id for the 'Specified Catalog' attribute. + * + * + * @generated + * @ordered + */ + public static final int IJOIN_TABLE__SPECIFIED_CATALOG = ITABLE__SPECIFIED_CATALOG; + + /** + * The feature id for the 'Default Catalog' attribute. + * + * + * @generated + * @ordered + */ + public static final int IJOIN_TABLE__DEFAULT_CATALOG = ITABLE__DEFAULT_CATALOG; + + /** + * The feature id for the 'Schema' attribute. + * + * + * @generated + * @ordered + */ + public static final int IJOIN_TABLE__SCHEMA = ITABLE__SCHEMA; + + /** + * The feature id for the 'Specified Schema' attribute. + * + * + * @generated + * @ordered + */ + public static final int IJOIN_TABLE__SPECIFIED_SCHEMA = ITABLE__SPECIFIED_SCHEMA; + + /** + * The feature id for the 'Default Schema' attribute. + * + * + * @generated + * @ordered + */ + public static final int IJOIN_TABLE__DEFAULT_SCHEMA = ITABLE__DEFAULT_SCHEMA; + + /** + * The feature id for the 'Join Columns' containment reference list. + * + * + * @generated + * @ordered + */ + public static final int IJOIN_TABLE__JOIN_COLUMNS = ITABLE_FEATURE_COUNT + 0; + + /** + * The feature id for the 'Specified Join Columns' containment reference list. + * + * + * @generated + * @ordered + */ + public static final int IJOIN_TABLE__SPECIFIED_JOIN_COLUMNS = ITABLE_FEATURE_COUNT + 1; + + /** + * The feature id for the 'Default Join Columns' containment reference list. + * + * + * @generated + * @ordered + */ + public static final int IJOIN_TABLE__DEFAULT_JOIN_COLUMNS = ITABLE_FEATURE_COUNT + 2; + + /** + * The feature id for the 'Inverse Join Columns' containment reference list. + * + * + * @generated + * @ordered + */ + public static final int IJOIN_TABLE__INVERSE_JOIN_COLUMNS = ITABLE_FEATURE_COUNT + 3; + + /** + * The feature id for the 'Specified Inverse Join Columns' containment reference list. + * + * + * @generated + * @ordered + */ + public static final int IJOIN_TABLE__SPECIFIED_INVERSE_JOIN_COLUMNS = ITABLE_FEATURE_COUNT + 4; + + /** + * The feature id for the 'Default Inverse Join Columns' containment reference list. + * + * + * @generated + * @ordered + */ + public static final int IJOIN_TABLE__DEFAULT_INVERSE_JOIN_COLUMNS = ITABLE_FEATURE_COUNT + 5; + + /** + * The number of structural features of the 'IJoin Table' class. + * + * + * @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 IAbstract Join Column}' class. + * + * + * @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 'Name' attribute. + * + * + * @generated + * @ordered + */ + public static final int IABSTRACT_JOIN_COLUMN__NAME = INAMED_COLUMN__NAME; + + /** + * The feature id for the 'Specified Name' attribute. + * + * + * @generated + * @ordered + */ + public static final int IABSTRACT_JOIN_COLUMN__SPECIFIED_NAME = INAMED_COLUMN__SPECIFIED_NAME; + + /** + * The feature id for the 'Default Name' attribute. + * + * + * @generated + * @ordered + */ + public static final int IABSTRACT_JOIN_COLUMN__DEFAULT_NAME = INAMED_COLUMN__DEFAULT_NAME; + + /** + * The feature id for the 'Column Definition' attribute. + * + * + * @generated + * @ordered + */ + public static final int IABSTRACT_JOIN_COLUMN__COLUMN_DEFINITION = INAMED_COLUMN__COLUMN_DEFINITION; + + /** + * The feature id for the 'Referenced Column Name' attribute. + * + * + * @generated + * @ordered + */ + public static final int IABSTRACT_JOIN_COLUMN__REFERENCED_COLUMN_NAME = INAMED_COLUMN_FEATURE_COUNT + 0; + + /** + * The feature id for the 'Specified Referenced Column Name' attribute. + * + * + * @generated + * @ordered + */ + public static final int IABSTRACT_JOIN_COLUMN__SPECIFIED_REFERENCED_COLUMN_NAME = INAMED_COLUMN_FEATURE_COUNT + 1; + + /** + * The feature id for the 'Default Referenced Column Name' attribute. + * + * + * @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 'IAbstract Join Column' class. + * + * + * @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 IJoin Column}' class. + * + * + * @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 'Name' attribute. + * + * + * @generated + * @ordered + */ + public static final int IJOIN_COLUMN__NAME = IABSTRACT_COLUMN__NAME; + + /** + * The feature id for the 'Specified Name' attribute. + * + * + * @generated + * @ordered + */ + public static final int IJOIN_COLUMN__SPECIFIED_NAME = IABSTRACT_COLUMN__SPECIFIED_NAME; + + /** + * The feature id for the 'Default Name' attribute. + * + * + * @generated + * @ordered + */ + public static final int IJOIN_COLUMN__DEFAULT_NAME = IABSTRACT_COLUMN__DEFAULT_NAME; + + /** + * The feature id for the 'Column Definition' attribute. + * + * + * @generated + * @ordered + */ + public static final int IJOIN_COLUMN__COLUMN_DEFINITION = IABSTRACT_COLUMN__COLUMN_DEFINITION; + + /** + * The feature id for the 'Unique' attribute. + * + * + * @generated + * @ordered + */ + public static final int IJOIN_COLUMN__UNIQUE = IABSTRACT_COLUMN__UNIQUE; + + /** + * The feature id for the 'Nullable' attribute. + * + * + * @generated + * @ordered + */ + public static final int IJOIN_COLUMN__NULLABLE = IABSTRACT_COLUMN__NULLABLE; + + /** + * The feature id for the 'Insertable' attribute. + * + * + * @generated + * @ordered + */ + public static final int IJOIN_COLUMN__INSERTABLE = IABSTRACT_COLUMN__INSERTABLE; + + /** + * The feature id for the 'Updatable' attribute. + * + * + * @generated + * @ordered + */ + public static final int IJOIN_COLUMN__UPDATABLE = IABSTRACT_COLUMN__UPDATABLE; + + /** + * The feature id for the 'Table' attribute. + * + * + * @generated + * @ordered + */ + public static final int IJOIN_COLUMN__TABLE = IABSTRACT_COLUMN__TABLE; + + /** + * The feature id for the 'Specified Table' attribute. + * + * + * @generated + * @ordered + */ + public static final int IJOIN_COLUMN__SPECIFIED_TABLE = IABSTRACT_COLUMN__SPECIFIED_TABLE; + + /** + * The feature id for the 'Default Table' attribute. + * + * + * @generated + * @ordered + */ + public static final int IJOIN_COLUMN__DEFAULT_TABLE = IABSTRACT_COLUMN__DEFAULT_TABLE; + + /** + * The feature id for the 'Referenced Column Name' attribute. + * + * + * @generated + * @ordered + */ + public static final int IJOIN_COLUMN__REFERENCED_COLUMN_NAME = IABSTRACT_COLUMN_FEATURE_COUNT + 0; + + /** + * The feature id for the 'Specified Referenced Column Name' attribute. + * + * + * @generated + * @ordered + */ + public static final int IJOIN_COLUMN__SPECIFIED_REFERENCED_COLUMN_NAME = IABSTRACT_COLUMN_FEATURE_COUNT + 1; + + /** + * The feature id for the 'Default Referenced Column Name' attribute. + * + * + * @generated + * @ordered + */ + public static final int IJOIN_COLUMN__DEFAULT_REFERENCED_COLUMN_NAME = IABSTRACT_COLUMN_FEATURE_COUNT + 2; + + /** + * The number of structural features of the 'IJoin Column' class. + * + * + * @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 IOverride}' class. + * + * + * @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 'Name' attribute. + * + * + * @generated + * @ordered + */ + public static final int IOVERRIDE__NAME = JpaCorePackage.IJPA_SOURCE_OBJECT_FEATURE_COUNT + 0; + + /** + * The number of structural features of the 'IOverride' class. + * + * + * @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 IAttribute Override}' class. + * + * + * @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 'Name' attribute. + * + * + * @generated + * @ordered + */ + public static final int IATTRIBUTE_OVERRIDE__NAME = IOVERRIDE__NAME; + + /** + * The feature id for the 'Column' containment reference. + * + * + * @generated + * @ordered + */ + public static final int IATTRIBUTE_OVERRIDE__COLUMN = IOVERRIDE_FEATURE_COUNT + 0; + + /** + * The number of structural features of the 'IAttribute Override' class. + * + * + * @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 IAssociation Override}' class. + * + * + * @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 'Name' attribute. + * + * + * @generated + * @ordered + */ + public static final int IASSOCIATION_OVERRIDE__NAME = IOVERRIDE__NAME; + + /** + * The feature id for the 'Join Columns' containment reference list. + * + * + * @generated + * @ordered + */ + public static final int IASSOCIATION_OVERRIDE__JOIN_COLUMNS = IOVERRIDE_FEATURE_COUNT + 0; + + /** + * The feature id for the 'Specified Join Columns' containment reference list. + * + * + * @generated + * @ordered + */ + public static final int IASSOCIATION_OVERRIDE__SPECIFIED_JOIN_COLUMNS = IOVERRIDE_FEATURE_COUNT + 1; + + /** + * The feature id for the 'Default Join Columns' containment reference list. + * + * + * @generated + * @ordered + */ + public static final int IASSOCIATION_OVERRIDE__DEFAULT_JOIN_COLUMNS = IOVERRIDE_FEATURE_COUNT + 2; + + /** + * The number of structural features of the 'IAssociation Override' class. + * + * + * @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 IDiscriminator Column}' class. + * + * + * @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 'Default Name' attribute. + * + * + * @generated + * @ordered + */ + public static final int IDISCRIMINATOR_COLUMN__DEFAULT_NAME = JpaCorePackage.IJPA_SOURCE_OBJECT_FEATURE_COUNT + 0; + + /** + * The feature id for the 'Specified Name' attribute. + * + * + * @generated + * @ordered + */ + public static final int IDISCRIMINATOR_COLUMN__SPECIFIED_NAME = JpaCorePackage.IJPA_SOURCE_OBJECT_FEATURE_COUNT + 1; + + /** + * The feature id for the 'Name' attribute. + * + * + * @generated + * @ordered + */ + public static final int IDISCRIMINATOR_COLUMN__NAME = JpaCorePackage.IJPA_SOURCE_OBJECT_FEATURE_COUNT + 2; + + /** + * The feature id for the 'Discriminator Type' attribute. + * + * + * @generated + * @ordered + */ + public static final int IDISCRIMINATOR_COLUMN__DISCRIMINATOR_TYPE = JpaCorePackage.IJPA_SOURCE_OBJECT_FEATURE_COUNT + 3; + + /** + * The feature id for the 'Column Definition' attribute. + * + * + * @generated + * @ordered + */ + public static final int IDISCRIMINATOR_COLUMN__COLUMN_DEFINITION = JpaCorePackage.IJPA_SOURCE_OBJECT_FEATURE_COUNT + 4; + + /** + * The feature id for the 'Default Length' attribute. + * + * + * @generated + * @ordered + */ + public static final int IDISCRIMINATOR_COLUMN__DEFAULT_LENGTH = JpaCorePackage.IJPA_SOURCE_OBJECT_FEATURE_COUNT + 5; + + /** + * The feature id for the 'Specified Length' attribute. + * + * + * @generated + * @ordered + */ + public static final int IDISCRIMINATOR_COLUMN__SPECIFIED_LENGTH = JpaCorePackage.IJPA_SOURCE_OBJECT_FEATURE_COUNT + 6; + + /** + * The feature id for the 'Length' attribute. + * + * + * @generated + * @ordered + */ + public static final int IDISCRIMINATOR_COLUMN__LENGTH = JpaCorePackage.IJPA_SOURCE_OBJECT_FEATURE_COUNT + 7; + + /** + * The number of structural features of the 'IDiscriminator Column' class. + * + * + * @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 ISecondary Table}' class. + * + * + * @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 'Name' attribute. + * + * + * @generated + * @ordered + */ + public static final int ISECONDARY_TABLE__NAME = ITABLE__NAME; + + /** + * The feature id for the 'Specified Name' attribute. + * + * + * @generated + * @ordered + */ + public static final int ISECONDARY_TABLE__SPECIFIED_NAME = ITABLE__SPECIFIED_NAME; + + /** + * The feature id for the 'Default Name' attribute. + * + * + * @generated + * @ordered + */ + public static final int ISECONDARY_TABLE__DEFAULT_NAME = ITABLE__DEFAULT_NAME; + + /** + * The feature id for the 'Catalog' attribute. + * + * + * @generated + * @ordered + */ + public static final int ISECONDARY_TABLE__CATALOG = ITABLE__CATALOG; + + /** + * The feature id for the 'Specified Catalog' attribute. + * + * + * @generated + * @ordered + */ + public static final int ISECONDARY_TABLE__SPECIFIED_CATALOG = ITABLE__SPECIFIED_CATALOG; + + /** + * The feature id for the 'Default Catalog' attribute. + * + * + * @generated + * @ordered + */ + public static final int ISECONDARY_TABLE__DEFAULT_CATALOG = ITABLE__DEFAULT_CATALOG; + + /** + * The feature id for the 'Schema' attribute. + * + * + * @generated + * @ordered + */ + public static final int ISECONDARY_TABLE__SCHEMA = ITABLE__SCHEMA; + + /** + * The feature id for the 'Specified Schema' attribute. + * + * + * @generated + * @ordered + */ + public static final int ISECONDARY_TABLE__SPECIFIED_SCHEMA = ITABLE__SPECIFIED_SCHEMA; + + /** + * The feature id for the 'Default Schema' attribute. + * + * + * @generated + * @ordered + */ + public static final int ISECONDARY_TABLE__DEFAULT_SCHEMA = ITABLE__DEFAULT_SCHEMA; + + /** + * The number of structural features of the 'ISecondary Table' class. + * + * + * @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 IPrimary Key Join Column}' class. + * + * + * @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 'Name' attribute. + * + * + * @generated + * @ordered + */ + public static final int IPRIMARY_KEY_JOIN_COLUMN__NAME = IABSTRACT_JOIN_COLUMN__NAME; + + /** + * The feature id for the 'Specified Name' attribute. + * + * + * @generated + * @ordered + */ + public static final int IPRIMARY_KEY_JOIN_COLUMN__SPECIFIED_NAME = IABSTRACT_JOIN_COLUMN__SPECIFIED_NAME; + + /** + * The feature id for the 'Default Name' attribute. + * + * + * @generated + * @ordered + */ + public static final int IPRIMARY_KEY_JOIN_COLUMN__DEFAULT_NAME = IABSTRACT_JOIN_COLUMN__DEFAULT_NAME; + + /** + * The feature id for the 'Column Definition' attribute. + * + * + * @generated + * @ordered + */ + public static final int IPRIMARY_KEY_JOIN_COLUMN__COLUMN_DEFINITION = IABSTRACT_JOIN_COLUMN__COLUMN_DEFINITION; + + /** + * The feature id for the 'Referenced Column Name' attribute. + * + * + * @generated + * @ordered + */ + public static final int IPRIMARY_KEY_JOIN_COLUMN__REFERENCED_COLUMN_NAME = IABSTRACT_JOIN_COLUMN__REFERENCED_COLUMN_NAME; + + /** + * The feature id for the 'Specified Referenced Column Name' attribute. + * + * + * @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 'Default Referenced Column Name' attribute. + * + * + * @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 'IPrimary Key Join Column' class. + * + * + * @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 IGenerator}' class. + * + * + * @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 'Name' attribute. + * + * + * @generated + * @ordered + */ + public static final int IGENERATOR__NAME = JpaCorePackage.IJPA_SOURCE_OBJECT_FEATURE_COUNT + 0; + + /** + * The feature id for the 'Initial Value' attribute. + * + * + * @generated + * @ordered + */ + public static final int IGENERATOR__INITIAL_VALUE = JpaCorePackage.IJPA_SOURCE_OBJECT_FEATURE_COUNT + 1; + + /** + * The feature id for the 'Specified Initial Value' attribute. + * + * + * @generated + * @ordered + */ + public static final int IGENERATOR__SPECIFIED_INITIAL_VALUE = JpaCorePackage.IJPA_SOURCE_OBJECT_FEATURE_COUNT + 2; + + /** + * The feature id for the 'Default Initial Value' attribute. + * + * + * @generated + * @ordered + */ + public static final int IGENERATOR__DEFAULT_INITIAL_VALUE = JpaCorePackage.IJPA_SOURCE_OBJECT_FEATURE_COUNT + 3; + + /** + * The feature id for the 'Allocation Size' attribute. + * + * + * @generated + * @ordered + */ + public static final int IGENERATOR__ALLOCATION_SIZE = JpaCorePackage.IJPA_SOURCE_OBJECT_FEATURE_COUNT + 4; + + /** + * The feature id for the 'Specified Allocation Size' attribute. + * + * + * @generated + * @ordered + */ + public static final int IGENERATOR__SPECIFIED_ALLOCATION_SIZE = JpaCorePackage.IJPA_SOURCE_OBJECT_FEATURE_COUNT + 5; + + /** + * The feature id for the 'Default Allocation Size' attribute. + * + * + * @generated + * @ordered + */ + public static final int IGENERATOR__DEFAULT_ALLOCATION_SIZE = JpaCorePackage.IJPA_SOURCE_OBJECT_FEATURE_COUNT + 6; + + /** + * The number of structural features of the 'IGenerator' class. + * + * + * @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 ITable Generator}' class. + * + * + * @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 'Name' attribute. + * + * + * @generated + * @ordered + */ + public static final int ITABLE_GENERATOR__NAME = IGENERATOR__NAME; + + /** + * The feature id for the 'Initial Value' attribute. + * + * + * @generated + * @ordered + */ + public static final int ITABLE_GENERATOR__INITIAL_VALUE = IGENERATOR__INITIAL_VALUE; + + /** + * The feature id for the 'Specified Initial Value' attribute. + * + * + * @generated + * @ordered + */ + public static final int ITABLE_GENERATOR__SPECIFIED_INITIAL_VALUE = IGENERATOR__SPECIFIED_INITIAL_VALUE; + + /** + * The feature id for the 'Default Initial Value' attribute. + * + * + * @generated + * @ordered + */ + public static final int ITABLE_GENERATOR__DEFAULT_INITIAL_VALUE = IGENERATOR__DEFAULT_INITIAL_VALUE; + + /** + * The feature id for the 'Allocation Size' attribute. + * + * + * @generated + * @ordered + */ + public static final int ITABLE_GENERATOR__ALLOCATION_SIZE = IGENERATOR__ALLOCATION_SIZE; + + /** + * The feature id for the 'Specified Allocation Size' attribute. + * + * + * @generated + * @ordered + */ + public static final int ITABLE_GENERATOR__SPECIFIED_ALLOCATION_SIZE = IGENERATOR__SPECIFIED_ALLOCATION_SIZE; + + /** + * The feature id for the 'Default Allocation Size' attribute. + * + * + * @generated + * @ordered + */ + public static final int ITABLE_GENERATOR__DEFAULT_ALLOCATION_SIZE = IGENERATOR__DEFAULT_ALLOCATION_SIZE; + + /** + * The feature id for the 'Table' attribute. + * + * + * @generated + * @ordered + */ + public static final int ITABLE_GENERATOR__TABLE = IGENERATOR_FEATURE_COUNT + 0; + + /** + * The feature id for the 'Specified Table' attribute. + * + * + * @generated + * @ordered + */ + public static final int ITABLE_GENERATOR__SPECIFIED_TABLE = IGENERATOR_FEATURE_COUNT + 1; + + /** + * The feature id for the 'Default Table' attribute. + * + * + * @generated + * @ordered + */ + public static final int ITABLE_GENERATOR__DEFAULT_TABLE = IGENERATOR_FEATURE_COUNT + 2; + + /** + * The feature id for the 'Catalog' attribute. + * + * + * @generated + * @ordered + */ + public static final int ITABLE_GENERATOR__CATALOG = IGENERATOR_FEATURE_COUNT + 3; + + /** + * The feature id for the 'Specified Catalog' attribute. + * + * + * @generated + * @ordered + */ + public static final int ITABLE_GENERATOR__SPECIFIED_CATALOG = IGENERATOR_FEATURE_COUNT + 4; + + /** + * The feature id for the 'Default Catalog' attribute. + * + * + * @generated + * @ordered + */ + public static final int ITABLE_GENERATOR__DEFAULT_CATALOG = IGENERATOR_FEATURE_COUNT + 5; + + /** + * The feature id for the 'Schema' attribute. + * + * + * @generated + * @ordered + */ + public static final int ITABLE_GENERATOR__SCHEMA = IGENERATOR_FEATURE_COUNT + 6; + + /** + * The feature id for the 'Specified Schema' attribute. + * + * + * @generated + * @ordered + */ + public static final int ITABLE_GENERATOR__SPECIFIED_SCHEMA = IGENERATOR_FEATURE_COUNT + 7; + + /** + * The feature id for the 'Default Schema' attribute. + * + * + * @generated + * @ordered + */ + public static final int ITABLE_GENERATOR__DEFAULT_SCHEMA = IGENERATOR_FEATURE_COUNT + 8; + + /** + * The feature id for the 'Pk Column Name' attribute. + * + * + * @generated + * @ordered + */ + public static final int ITABLE_GENERATOR__PK_COLUMN_NAME = IGENERATOR_FEATURE_COUNT + 9; + + /** + * The feature id for the 'Specified Pk Column Name' attribute. + * + * + * @generated + * @ordered + */ + public static final int ITABLE_GENERATOR__SPECIFIED_PK_COLUMN_NAME = IGENERATOR_FEATURE_COUNT + 10; + + /** + * The feature id for the 'Default Pk Column Name' attribute. + * + * + * @generated + * @ordered + */ + public static final int ITABLE_GENERATOR__DEFAULT_PK_COLUMN_NAME = IGENERATOR_FEATURE_COUNT + 11; + + /** + * The feature id for the 'Value Column Name' attribute. + * + * + * @generated + * @ordered + */ + public static final int ITABLE_GENERATOR__VALUE_COLUMN_NAME = IGENERATOR_FEATURE_COUNT + 12; + + /** + * The feature id for the 'Specified Value Column Name' attribute. + * + * + * @generated + * @ordered + */ + public static final int ITABLE_GENERATOR__SPECIFIED_VALUE_COLUMN_NAME = IGENERATOR_FEATURE_COUNT + 13; + + /** + * The feature id for the 'Default Value Column Name' attribute. + * + * + * @generated + * @ordered + */ + public static final int ITABLE_GENERATOR__DEFAULT_VALUE_COLUMN_NAME = IGENERATOR_FEATURE_COUNT + 14; + + /** + * The feature id for the 'Pk Column Value' attribute. + * + * + * @generated + * @ordered + */ + public static final int ITABLE_GENERATOR__PK_COLUMN_VALUE = IGENERATOR_FEATURE_COUNT + 15; + + /** + * The feature id for the 'Specified Pk Column Value' attribute. + * + * + * @generated + * @ordered + */ + public static final int ITABLE_GENERATOR__SPECIFIED_PK_COLUMN_VALUE = IGENERATOR_FEATURE_COUNT + 16; + + /** + * The feature id for the 'Default Pk Column Value' attribute. + * + * + * @generated + * @ordered + */ + public static final int ITABLE_GENERATOR__DEFAULT_PK_COLUMN_VALUE = IGENERATOR_FEATURE_COUNT + 17; + + /** + * The number of structural features of the 'ITable Generator' class. + * + * + * @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 ISequence Generator}' class. + * + * + * @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 'Name' attribute. + * + * + * @generated + * @ordered + */ + public static final int ISEQUENCE_GENERATOR__NAME = IGENERATOR__NAME; + + /** + * The feature id for the 'Initial Value' attribute. + * + * + * @generated + * @ordered + */ + public static final int ISEQUENCE_GENERATOR__INITIAL_VALUE = IGENERATOR__INITIAL_VALUE; + + /** + * The feature id for the 'Specified Initial Value' attribute. + * + * + * @generated + * @ordered + */ + public static final int ISEQUENCE_GENERATOR__SPECIFIED_INITIAL_VALUE = IGENERATOR__SPECIFIED_INITIAL_VALUE; + + /** + * The feature id for the 'Default Initial Value' attribute. + * + * + * @generated + * @ordered + */ + public static final int ISEQUENCE_GENERATOR__DEFAULT_INITIAL_VALUE = IGENERATOR__DEFAULT_INITIAL_VALUE; + + /** + * The feature id for the 'Allocation Size' attribute. + * + * + * @generated + * @ordered + */ + public static final int ISEQUENCE_GENERATOR__ALLOCATION_SIZE = IGENERATOR__ALLOCATION_SIZE; + + /** + * The feature id for the 'Specified Allocation Size' attribute. + * + * + * @generated + * @ordered + */ + public static final int ISEQUENCE_GENERATOR__SPECIFIED_ALLOCATION_SIZE = IGENERATOR__SPECIFIED_ALLOCATION_SIZE; + + /** + * The feature id for the 'Default Allocation Size' attribute. + * + * + * @generated + * @ordered + */ + public static final int ISEQUENCE_GENERATOR__DEFAULT_ALLOCATION_SIZE = IGENERATOR__DEFAULT_ALLOCATION_SIZE; + + /** + * The feature id for the 'Sequence Name' attribute. + * + * + * @generated + * @ordered + */ + public static final int ISEQUENCE_GENERATOR__SEQUENCE_NAME = IGENERATOR_FEATURE_COUNT + 0; + + /** + * The feature id for the 'Specified Sequence Name' attribute. + * + * + * @generated + * @ordered + */ + public static final int ISEQUENCE_GENERATOR__SPECIFIED_SEQUENCE_NAME = IGENERATOR_FEATURE_COUNT + 1; + + /** + * The feature id for the 'Default Sequence Name' attribute. + * + * + * @generated + * @ordered + */ + public static final int ISEQUENCE_GENERATOR__DEFAULT_SEQUENCE_NAME = IGENERATOR_FEATURE_COUNT + 2; + + /** + * The number of structural features of the 'ISequence Generator' class. + * + * + * @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 IGenerated Value}' class. + * + * + * @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 'Strategy' attribute. + * + * + * @generated + * @ordered + */ + public static final int IGENERATED_VALUE__STRATEGY = JpaCorePackage.IJPA_SOURCE_OBJECT_FEATURE_COUNT + 0; + + /** + * The feature id for the 'Generator' attribute. + * + * + * @generated + * @ordered + */ + public static final int IGENERATED_VALUE__GENERATOR = JpaCorePackage.IJPA_SOURCE_OBJECT_FEATURE_COUNT + 1; + + /** + * The number of structural features of the 'IGenerated Value' class. + * + * + * @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 IOrder By}' class. + * + * + * @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 'Value' attribute. + * + * + * @generated + * @ordered + */ + public static final int IORDER_BY__VALUE = JpaCorePackage.IJPA_SOURCE_OBJECT_FEATURE_COUNT + 0; + + /** + * The feature id for the 'Type' attribute. + * + * + * @generated + * @ordered + */ + public static final int IORDER_BY__TYPE = JpaCorePackage.IJPA_SOURCE_OBJECT_FEATURE_COUNT + 1; + + /** + * The number of structural features of the 'IOrder By' class. + * + * + * @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 IQuery}' class. + * + * + * @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 'Name' attribute. + * + * + * @generated + * @ordered + */ + public static final int IQUERY__NAME = JpaCorePackage.IJPA_SOURCE_OBJECT_FEATURE_COUNT + 0; + + /** + * The feature id for the 'Query' attribute. + * + * + * @generated + * @ordered + */ + public static final int IQUERY__QUERY = JpaCorePackage.IJPA_SOURCE_OBJECT_FEATURE_COUNT + 1; + + /** + * The feature id for the 'Hints' containment reference list. + * + * + * @generated + * @ordered + */ + public static final int IQUERY__HINTS = JpaCorePackage.IJPA_SOURCE_OBJECT_FEATURE_COUNT + 2; + + /** + * The number of structural features of the 'IQuery' class. + * + * + * @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 INamed Query}' class. + * + * + * @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 'Name' attribute. + * + * + * @generated + * @ordered + */ + public static final int INAMED_QUERY__NAME = JpaCorePackage.IJPA_SOURCE_OBJECT_FEATURE_COUNT + 0; + + /** + * The feature id for the 'Query' attribute. + * + * + * @generated + * @ordered + */ + public static final int INAMED_QUERY__QUERY = JpaCorePackage.IJPA_SOURCE_OBJECT_FEATURE_COUNT + 1; + + /** + * The feature id for the 'Hints' containment reference list. + * + * + * @generated + * @ordered + */ + public static final int INAMED_QUERY__HINTS = JpaCorePackage.IJPA_SOURCE_OBJECT_FEATURE_COUNT + 2; + + /** + * The number of structural features of the 'INamed Query' class. + * + * + * @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 INamed Native Query}' class. + * + * + * @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 'Name' attribute. + * + * + * @generated + * @ordered + */ + public static final int INAMED_NATIVE_QUERY__NAME = JpaCorePackage.IJPA_SOURCE_OBJECT_FEATURE_COUNT + 0; + + /** + * The feature id for the 'Query' attribute. + * + * + * @generated + * @ordered + */ + public static final int INAMED_NATIVE_QUERY__QUERY = JpaCorePackage.IJPA_SOURCE_OBJECT_FEATURE_COUNT + 1; + + /** + * The feature id for the 'Hints' containment reference list. + * + * + * @generated + * @ordered + */ + public static final int INAMED_NATIVE_QUERY__HINTS = JpaCorePackage.IJPA_SOURCE_OBJECT_FEATURE_COUNT + 2; + + /** + * The feature id for the 'Result Class' attribute. + * + * + * @generated + * @ordered + */ + public static final int INAMED_NATIVE_QUERY__RESULT_CLASS = JpaCorePackage.IJPA_SOURCE_OBJECT_FEATURE_COUNT + 3; + + /** + * The feature id for the 'Result Set Mapping' attribute. + * + * + * @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 'INamed Native Query' class. + * + * + * @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 IQuery Hint}' class. + * + * + * @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 'Name' attribute. + * + * + * @generated + * @ordered + */ + public static final int IQUERY_HINT__NAME = JpaCorePackage.IJPA_SOURCE_OBJECT_FEATURE_COUNT + 0; + + /** + * The feature id for the 'Value' attribute. + * + * + * @generated + * @ordered + */ + public static final int IQUERY_HINT__VALUE = JpaCorePackage.IJPA_SOURCE_OBJECT_FEATURE_COUNT + 1; + + /** + * The number of structural features of the 'IQuery Hint' class. + * + * + * @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 Default Eager Fetch Type}' enum. + * + * + * @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 Default Lazy Fetch Type}' enum. + * + * + * @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 Default False Boolean}' enum. + * + * + * @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 Default True Boolean}' enum. + * + * + * @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 Temporal Type}' enum. + * + * + * @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 Inheritance Type}' enum. + * + * + * @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 Discriminator Type}' enum. + * + * + * @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 Generation Type}' enum. + * + * + * @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 Enum Type}' enum. + * + * + * @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 Ordering Type}' enum. + * + * + * @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; + + /** + * + * + * @generated + */ + private EClass iMappedSuperclassEClass = null; + + /** + * + * + * @generated + */ + private EClass iEntityEClass = null; + + /** + * + * + * @generated + */ + private EClass iEmbeddableEClass = null; + + /** + * + * + * @generated + */ + private EClass iTableEClass = null; + + /** + * + * + * @generated + */ + private EClass iNamedColumnEClass = null; + + /** + * + * + * @generated + */ + private EClass iAbstractColumnEClass = null; + + /** + * + * + * @generated + */ + private EClass iColumnEClass = null; + + /** + * + * + * @generated + */ + private EClass iColumnMappingEClass = null; + + /** + * + * + * @generated + */ + private EClass iBasicEClass = null; + + /** + * + * + * @generated + */ + private EClass iIdEClass = null; + + /** + * + * + * @generated + */ + private EClass iTransientEClass = null; + + /** + * + * + * @generated + */ + private EClass iVersionEClass = null; + + /** + * + * + * @generated + */ + private EClass iEmbeddedIdEClass = null; + + /** + * + * + * @generated + */ + private EClass iEmbeddedEClass = null; + + /** + * + * + * @generated + */ + private EClass iRelationshipMappingEClass = null; + + /** + * + * + * @generated + */ + private EClass iNonOwningMappingEClass = null; + + /** + * + * + * @generated + */ + private EClass iMultiRelationshipMappingEClass = null; + + /** + * + * + * @generated + */ + private EClass iOneToManyEClass = null; + + /** + * + * + * @generated + */ + private EClass iManyToManyEClass = null; + + /** + * + * + * @generated + */ + private EClass iSingleRelationshipMappingEClass = null; + + /** + * + * + * @generated + */ + private EClass iManyToOneEClass = null; + + /** + * + * + * @generated + */ + private EClass iOneToOneEClass = null; + + /** + * + * + * @generated + */ + private EClass iJoinTableEClass = null; + + /** + * + * + * @generated + */ + private EClass iAbstractJoinColumnEClass = null; + + /** + * + * + * @generated + */ + private EClass iJoinColumnEClass = null; + + /** + * + * + * @generated + */ + private EClass iOverrideEClass = null; + + /** + * + * + * @generated + */ + private EClass iAttributeOverrideEClass = null; + + /** + * + * + * @generated + */ + private EClass iAssociationOverrideEClass = null; + + /** + * + * + * @generated + */ + private EClass iDiscriminatorColumnEClass = null; + + /** + * + * + * @generated + */ + private EClass iSecondaryTableEClass = null; + + /** + * + * + * @generated + */ + private EClass iPrimaryKeyJoinColumnEClass = null; + + /** + * + * + * @generated + */ + private EClass iGeneratorEClass = null; + + /** + * + * + * @generated + */ + private EClass iTableGeneratorEClass = null; + + /** + * + * + * @generated + */ + private EClass iSequenceGeneratorEClass = null; + + /** + * + * + * @generated + */ + private EClass iGeneratedValueEClass = null; + + /** + * + * + * @generated + */ + private EClass iOrderByEClass = null; + + /** + * + * + * @generated + */ + private EClass iQueryEClass = null; + + /** + * + * + * @generated + */ + private EClass iNamedQueryEClass = null; + + /** + * + * + * @generated + */ + private EClass iNamedNativeQueryEClass = null; + + /** + * + * + * @generated + */ + private EClass iQueryHintEClass = null; + + /** + * + * + * @generated + */ + private EEnum defaultEagerFetchTypeEEnum = null; + + /** + * + * + * @generated + */ + private EEnum defaultLazyFetchTypeEEnum = null; + + /** + * + * + * @generated + */ + private EEnum defaultFalseBooleanEEnum = null; + + /** + * + * + * @generated + */ + private EEnum defaultTrueBooleanEEnum = null; + + /** + * + * + * @generated + */ + private EEnum temporalTypeEEnum = null; + + /** + * + * + * @generated + */ + private EEnum inheritanceTypeEEnum = null; + + /** + * + * + * @generated + */ + private EEnum discriminatorTypeEEnum = null; + + /** + * + * + * @generated + */ + private EEnum generationTypeEEnum = null; + + /** + * + * + * @generated + */ + private EEnum enumTypeEEnum = null; + + /** + * + * + * @generated + */ + private EEnum orderingTypeEEnum = null; + + /** + * Creates an instance of the model Package, registered with + * {@link org.eclipse.emf.ecore.EPackage.Registry EPackage.Registry} by the package + * package URI value. + *

    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. + * + * + * @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); + } + + /** + * + * + * @generated + */ + private static boolean isInited = false; + + /** + * Creates, registers, and initializes the Package 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. + *

    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. + *

    Invocation of this method will not affect any packages that have + * already been initialized. + * + * + * @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 IMapped Superclass}'. + * + * + * @return the meta object for class 'IMapped Superclass'. + * @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 IEntity}'. + * + * + * @return the meta object for class 'IEntity'. + * @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 Specified Name}'. + * + * + * @return the meta object for the attribute 'Specified Name'. + * @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 Default Name}'. + * + * + * @return the meta object for the attribute 'Default Name'. + * @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 Table}'. + * + * + * @return the meta object for the containment reference 'Table'. + * @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 Inheritance Strategy}'. + * + * + * @return the meta object for the attribute 'Inheritance Strategy'. + * @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 Discriminator Column}'. + * + * + * @return the meta object for the containment reference 'Discriminator Column'. + * @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 Sequence Generator}'. + * + * + * @return the meta object for the containment reference 'Sequence Generator'. + * @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 Table Generator}'. + * + * + * @return the meta object for the containment reference 'Table Generator'. + * @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 Default Discriminator Value}'. + * + * + * @return the meta object for the attribute 'Default Discriminator Value'. + * @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 Specified Discriminator Value}'. + * + * + * @return the meta object for the attribute 'Specified Discriminator Value'. + * @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 Discriminator Value}'. + * + * + * @return the meta object for the attribute 'Discriminator Value'. + * @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 Primary Key Join Columns}'. + * + * + * @return the meta object for the containment reference list 'Primary Key Join Columns'. + * @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 Specified Primary Key Join Columns}'. + * + * + * @return the meta object for the containment reference list 'Specified Primary Key Join Columns'. + * @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 Default Primary Key Join Columns}'. + * + * + * @return the meta object for the containment reference list 'Default Primary Key Join Columns'. + * @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 Attribute Overrides}'. + * + * + * @return the meta object for the containment reference list 'Attribute Overrides'. + * @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 Specified Attribute Overrides}'. + * + * + * @return the meta object for the containment reference list 'Specified Attribute Overrides'. + * @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 Default Attribute Overrides}'. + * + * + * @return the meta object for the containment reference list 'Default Attribute Overrides'. + * @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 Association Overrides}'. + * + * + * @return the meta object for the containment reference list 'Association Overrides'. + * @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 Specified Association Overrides}'. + * + * + * @return the meta object for the containment reference list 'Specified Association Overrides'. + * @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 Default Association Overrides}'. + * + * + * @return the meta object for the containment reference list 'Default Association Overrides'. + * @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 Named Queries}'. + * + * + * @return the meta object for the containment reference list 'Named Queries'. + * @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 Named Native Queries}'. + * + * + * @return the meta object for the containment reference list 'Named Native Queries'. + * @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 IEmbeddable}'. + * + * + * @return the meta object for class 'IEmbeddable'. + * @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 ITable}'. + * + * + * @return the meta object for class 'ITable'. + * @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 Name}'. + * + * + * @return the meta object for the attribute 'Name'. + * @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 Specified Name}'. + * + * + * @return the meta object for the attribute 'Specified Name'. + * @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 Default Name}'. + * + * + * @return the meta object for the attribute 'Default Name'. + * @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 Catalog}'. + * + * + * @return the meta object for the attribute 'Catalog'. + * @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 Specified Catalog}'. + * + * + * @return the meta object for the attribute 'Specified Catalog'. + * @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 Default Catalog}'. + * + * + * @return the meta object for the attribute 'Default Catalog'. + * @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 Schema}'. + * + * + * @return the meta object for the attribute 'Schema'. + * @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 Specified Schema}'. + * + * + * @return the meta object for the attribute 'Specified Schema'. + * @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 Default Schema}'. + * + * + * @return the meta object for the attribute 'Default Schema'. + * @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 INamed Column}'. + * + * + * @return the meta object for class 'INamed Column'. + * @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 Name}'. + * + * + * @return the meta object for the attribute 'Name'. + * @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 Specified Name}'. + * + * + * @return the meta object for the attribute 'Specified Name'. + * @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 Default Name}'. + * + * + * @return the meta object for the attribute 'Default Name'. + * @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 Column Definition}'. + * + * + * @return the meta object for the attribute 'Column Definition'. + * @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 IAbstract Column}'. + * + * + * @return the meta object for class 'IAbstract Column'. + * @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 Unique}'. + * + * + * @return the meta object for the attribute 'Unique'. + * @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 Nullable}'. + * + * + * @return the meta object for the attribute 'Nullable'. + * @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 Insertable}'. + * + * + * @return the meta object for the attribute 'Insertable'. + * @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 Updatable}'. + * + * + * @return the meta object for the attribute 'Updatable'. + * @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 Table}'. + * + * + * @return the meta object for the attribute 'Table'. + * @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 Specified Table}'. + * + * + * @return the meta object for the attribute 'Specified Table'. + * @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 Default Table}'. + * + * + * @return the meta object for the attribute 'Default Table'. + * @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 IColumn}'. + * + * + * @return the meta object for class 'IColumn'. + * @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 Length}'. + * + * + * @return the meta object for the attribute 'Length'. + * @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 Precision}'. + * + * + * @return the meta object for the attribute 'Precision'. + * @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 Scale}'. + * + * + * @return the meta object for the attribute 'Scale'. + * @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 IColumn Mapping}'. + * + * + * @return the meta object for class 'IColumn Mapping'. + * @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 IBasic}'. + * + * + * @return the meta object for class 'IBasic'. + * @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 Fetch}'. + * + * + * @return the meta object for the attribute 'Fetch'. + * @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 Optional}'. + * + * + * @return the meta object for the attribute 'Optional'. + * @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 Column}'. + * + * + * @return the meta object for the containment reference 'Column'. + * @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 Lob}'. + * + * + * @return the meta object for the attribute 'Lob'. + * @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 Temporal}'. + * + * + * @return the meta object for the attribute 'Temporal'. + * @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 Enumerated}'. + * + * + * @return the meta object for the attribute 'Enumerated'. + * @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 IId}'. + * + * + * @return the meta object for class 'IId'. + * @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 Column}'. + * + * + * @return the meta object for the containment reference 'Column'. + * @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 Generated Value}'. + * + * + * @return the meta object for the containment reference 'Generated Value'. + * @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 Temporal}'. + * + * + * @return the meta object for the attribute 'Temporal'. + * @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 Table Generator}'. + * + * + * @return the meta object for the containment reference 'Table Generator'. + * @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 Sequence Generator}'. + * + * + * @return the meta object for the containment reference 'Sequence Generator'. + * @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 ITransient}'. + * + * + * @return the meta object for class 'ITransient'. + * @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 IVersion}'. + * + * + * @return the meta object for class 'IVersion'. + * @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 Column}'. + * + * + * @return the meta object for the containment reference 'Column'. + * @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 Temporal}'. + * + * + * @return the meta object for the attribute 'Temporal'. + * @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 IEmbedded Id}'. + * + * + * @return the meta object for class 'IEmbedded Id'. + * @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 IEmbedded}'. + * + * + * @return the meta object for class 'IEmbedded'. + * @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 Attribute Overrides}'. + * + * + * @return the meta object for the containment reference list 'Attribute Overrides'. + * @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 Specified Attribute Overrides}'. + * + * + * @return the meta object for the containment reference list 'Specified Attribute Overrides'. + * @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 Default Attribute Overrides}'. + * + * + * @return the meta object for the containment reference list 'Default Attribute Overrides'. + * @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 IRelationship Mapping}'. + * + * + * @return the meta object for class 'IRelationship Mapping'. + * @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 Target Entity}'. + * + * + * @return the meta object for the attribute 'Target Entity'. + * @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 Specified Target Entity}'. + * + * + * @return the meta object for the attribute 'Specified Target Entity'. + * @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 Default Target Entity}'. + * + * + * @return the meta object for the attribute 'Default Target Entity'. + * @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 Resolved Target Entity}'. + * + * + * @return the meta object for the reference 'Resolved Target Entity'. + * @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 INon Owning Mapping}'. + * + * + * @return the meta object for class 'INon Owning Mapping'. + * @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 Mapped By}'. + * + * + * @return the meta object for the attribute 'Mapped By'. + * @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 IMulti Relationship Mapping}'. + * + * + * @return the meta object for class 'IMulti Relationship Mapping'. + * @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 Fetch}'. + * + * + * @return the meta object for the attribute 'Fetch'. + * @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 Join Table}'. + * + * + * @return the meta object for the containment reference 'Join Table'. + * @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 Order By}'. + * + * + * @return the meta object for the containment reference 'Order By'. + * @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 IOne To Many}'. + * + * + * @return the meta object for class 'IOne To Many'. + * @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 IMany To Many}'. + * + * + * @return the meta object for class 'IMany To Many'. + * @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 ISingle Relationship Mapping}'. + * + * + * @return the meta object for class 'ISingle Relationship Mapping'. + * @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 Fetch}'. + * + * + * @return the meta object for the attribute 'Fetch'. + * @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 Join Columns}'. + * + * + * @return the meta object for the containment reference list 'Join Columns'. + * @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 Specified Join Columns}'. + * + * + * @return the meta object for the containment reference list 'Specified Join Columns'. + * @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 Default Join Columns}'. + * + * + * @return the meta object for the containment reference list 'Default Join Columns'. + * @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 IMany To One}'. + * + * + * @return the meta object for class 'IMany To One'. + * @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 IOne To One}'. + * + * + * @return the meta object for class 'IOne To One'. + * @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 IJoin Table}'. + * + * + * @return the meta object for class 'IJoin Table'. + * @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 Join Columns}'. + * + * + * @return the meta object for the containment reference list 'Join Columns'. + * @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 Specified Join Columns}'. + * + * + * @return the meta object for the containment reference list 'Specified Join Columns'. + * @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 Default Join Columns}'. + * + * + * @return the meta object for the containment reference list 'Default Join Columns'. + * @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 Inverse Join Columns}'. + * + * + * @return the meta object for the containment reference list 'Inverse Join Columns'. + * @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 Specified Inverse Join Columns}'. + * + * + * @return the meta object for the containment reference list 'Specified Inverse Join Columns'. + * @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 Default Inverse Join Columns}'. + * + * + * @return the meta object for the containment reference list 'Default Inverse Join Columns'. + * @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 IAbstract Join Column}'. + * + * + * @return the meta object for class 'IAbstract Join Column'. + * @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 Referenced Column Name}'. + * + * + * @return the meta object for the attribute 'Referenced Column Name'. + * @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 Specified Referenced Column Name}'. + * + * + * @return the meta object for the attribute 'Specified Referenced Column Name'. + * @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 Default Referenced Column Name}'. + * + * + * @return the meta object for the attribute 'Default Referenced Column Name'. + * @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 IJoin Column}'. + * + * + * @return the meta object for class 'IJoin Column'. + * @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 IOverride}'. + * + * + * @return the meta object for class 'IOverride'. + * @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 Name}'. + * + * + * @return the meta object for the attribute 'Name'. + * @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 IAttribute Override}'. + * + * + * @return the meta object for class 'IAttribute Override'. + * @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 Column}'. + * + * + * @return the meta object for the containment reference 'Column'. + * @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 IAssociation Override}'. + * + * + * @return the meta object for class 'IAssociation Override'. + * @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 Join Columns}'. + * + * + * @return the meta object for the containment reference list 'Join Columns'. + * @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 Specified Join Columns}'. + * + * + * @return the meta object for the containment reference list 'Specified Join Columns'. + * @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 Default Join Columns}'. + * + * + * @return the meta object for the containment reference list 'Default Join Columns'. + * @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 IDiscriminator Column}'. + * + * + * @return the meta object for class 'IDiscriminator Column'. + * @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 Default Name}'. + * + * + * @return the meta object for the attribute 'Default Name'. + * @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 Specified Name}'. + * + * + * @return the meta object for the attribute 'Specified Name'. + * @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 Name}'. + * + * + * @return the meta object for the attribute 'Name'. + * @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 Discriminator Type}'. + * + * + * @return the meta object for the attribute 'Discriminator Type'. + * @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 Column Definition}'. + * + * + * @return the meta object for the attribute 'Column Definition'. + * @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 Default Length}'. + * + * + * @return the meta object for the attribute 'Default Length'. + * @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 Specified Length}'. + * + * + * @return the meta object for the attribute 'Specified Length'. + * @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 Length}'. + * + * + * @return the meta object for the attribute 'Length'. + * @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 ISecondary Table}'. + * + * + * @return the meta object for class 'ISecondary Table'. + * @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 IPrimary Key Join Column}'. + * + * + * @return the meta object for class 'IPrimary Key Join Column'. + * @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 IGenerator}'. + * + * + * @return the meta object for class 'IGenerator'. + * @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 Name}'. + * + * + * @return the meta object for the attribute 'Name'. + * @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 Initial Value}'. + * + * + * @return the meta object for the attribute 'Initial Value'. + * @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 Specified Initial Value}'. + * + * + * @return the meta object for the attribute 'Specified Initial Value'. + * @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 Default Initial Value}'. + * + * + * @return the meta object for the attribute 'Default Initial Value'. + * @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 Allocation Size}'. + * + * + * @return the meta object for the attribute 'Allocation Size'. + * @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 Specified Allocation Size}'. + * + * + * @return the meta object for the attribute 'Specified Allocation Size'. + * @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 Default Allocation Size}'. + * + * + * @return the meta object for the attribute 'Default Allocation Size'. + * @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 ITable Generator}'. + * + * + * @return the meta object for class 'ITable Generator'. + * @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 Table}'. + * + * + * @return the meta object for the attribute 'Table'. + * @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 Specified Table}'. + * + * + * @return the meta object for the attribute 'Specified Table'. + * @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 Default Table}'. + * + * + * @return the meta object for the attribute 'Default Table'. + * @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 Catalog}'. + * + * + * @return the meta object for the attribute 'Catalog'. + * @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 Specified Catalog}'. + * + * + * @return the meta object for the attribute 'Specified Catalog'. + * @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 Default Catalog}'. + * + * + * @return the meta object for the attribute 'Default Catalog'. + * @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 Schema}'. + * + * + * @return the meta object for the attribute 'Schema'. + * @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 Specified Schema}'. + * + * + * @return the meta object for the attribute 'Specified Schema'. + * @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 Default Schema}'. + * + * + * @return the meta object for the attribute 'Default Schema'. + * @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 Pk Column Name}'. + * + * + * @return the meta object for the attribute 'Pk Column Name'. + * @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 Specified Pk Column Name}'. + * + * + * @return the meta object for the attribute 'Specified Pk Column Name'. + * @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 Default Pk Column Name}'. + * + * + * @return the meta object for the attribute 'Default Pk Column Name'. + * @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 Value Column Name}'. + * + * + * @return the meta object for the attribute 'Value Column Name'. + * @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 Specified Value Column Name}'. + * + * + * @return the meta object for the attribute 'Specified Value Column Name'. + * @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 Default Value Column Name}'. + * + * + * @return the meta object for the attribute 'Default Value Column Name'. + * @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 Pk Column Value}'. + * + * + * @return the meta object for the attribute 'Pk Column Value'. + * @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 Specified Pk Column Value}'. + * + * + * @return the meta object for the attribute 'Specified Pk Column Value'. + * @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 Default Pk Column Value}'. + * + * + * @return the meta object for the attribute 'Default Pk Column Value'. + * @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 ISequence Generator}'. + * + * + * @return the meta object for class 'ISequence Generator'. + * @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 Sequence Name}'. + * + * + * @return the meta object for the attribute 'Sequence Name'. + * @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 Specified Sequence Name}'. + * + * + * @return the meta object for the attribute 'Specified Sequence Name'. + * @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 Default Sequence Name}'. + * + * + * @return the meta object for the attribute 'Default Sequence Name'. + * @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 IGenerated Value}'. + * + * + * @return the meta object for class 'IGenerated Value'. + * @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 Strategy}'. + * + * + * @return the meta object for the attribute 'Strategy'. + * @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 Generator}'. + * + * + * @return the meta object for the attribute 'Generator'. + * @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 IOrder By}'. + * + * + * @return the meta object for class 'IOrder By'. + * @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 Value}'. + * + * + * @return the meta object for the attribute 'Value'. + * @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 Type}'. + * + * + * @return the meta object for the attribute 'Type'. + * @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 IQuery}'. + * + * + * @return the meta object for class 'IQuery'. + * @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 Name}'. + * + * + * @return the meta object for the attribute 'Name'. + * @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 Query}'. + * + * + * @return the meta object for the attribute 'Query'. + * @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 Hints}'. + * + * + * @return the meta object for the containment reference list 'Hints'. + * @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 INamed Query}'. + * + * + * @return the meta object for class 'INamed Query'. + * @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 INamed Native Query}'. + * + * + * @return the meta object for class 'INamed Native Query'. + * @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 Result Class}'. + * + * + * @return the meta object for the attribute 'Result Class'. + * @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 Result Set Mapping}'. + * + * + * @return the meta object for the attribute 'Result Set Mapping'. + * @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 IQuery Hint}'. + * + * + * @return the meta object for class 'IQuery Hint'. + * @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 Name}'. + * + * + * @return the meta object for the attribute 'Name'. + * @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 Value}'. + * + * + * @return the meta object for the attribute 'Value'. + * @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 Default Eager Fetch Type}'. + * + * + * @return the meta object for enum 'Default Eager Fetch Type'. + * @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 Default Lazy Fetch Type}'. + * + * + * @return the meta object for enum 'Default Lazy Fetch Type'. + * @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 Default False Boolean}'. + * + * + * @return the meta object for enum 'Default False Boolean'. + * @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 Default True Boolean}'. + * + * + * @return the meta object for enum 'Default True Boolean'. + * @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 Temporal Type}'. + * + * + * @return the meta object for enum 'Temporal Type'. + * @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 Inheritance Type}'. + * + * + * @return the meta object for enum 'Inheritance Type'. + * @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 Discriminator Type}'. + * + * + * @return the meta object for enum 'Discriminator Type'. + * @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 Generation Type}'. + * + * + * @return the meta object for enum 'Generation Type'. + * @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 Enum Type}'. + * + * + * @return the meta object for enum 'Enum Type'. + * @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 Ordering Type}'. + * + * + * @return the meta object for enum 'Ordering Type'. + * @see org.eclipse.jpt.core.internal.mappings.OrderingType + * @generated + */ + public EEnum getOrderingType() { + return orderingTypeEEnum; + } + + /** + * Returns the factory that creates the instances of the model. + * + * + * @return the factory that creates the instances of the model. + * @generated + */ + public JpaCoreMappingsFactory getJpaCoreMappingsFactory() { + return (JpaCoreMappingsFactory) getEFactoryInstance(); + } + + /** + * + * + * @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. + * + * + * @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); + } + + /** + * + * + * @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. + * + * + * @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); + } + /** + * + * Defines literals for the meta objects that represent + *

      + *
    • each class,
    • + *
    • each feature of each class,
    • + *
    • each enum,
    • + *
    • and each data type
    • + *
    + * + * @generated + */ + public interface Literals + { + /** + * The meta object literal for the '{@link org.eclipse.jpt.core.internal.mappings.IMappedSuperclass IMapped Superclass}' class. + * + * + * @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 IEntity}' class. + * + * + * @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 'Specified Name' attribute feature. + * + * + * @generated + */ + public static final EAttribute IENTITY__SPECIFIED_NAME = eINSTANCE.getIEntity_SpecifiedName(); + + /** + * The meta object literal for the 'Default Name' attribute feature. + * + * + * @generated + */ + public static final EAttribute IENTITY__DEFAULT_NAME = eINSTANCE.getIEntity_DefaultName(); + + /** + * The meta object literal for the 'Table' containment reference feature. + * + * + * @generated + */ + public static final EReference IENTITY__TABLE = eINSTANCE.getIEntity_Table(); + + /** + * The meta object literal for the 'Inheritance Strategy' attribute feature. + * + * + * @generated + */ + public static final EAttribute IENTITY__INHERITANCE_STRATEGY = eINSTANCE.getIEntity_InheritanceStrategy(); + + /** + * The meta object literal for the 'Discriminator Column' containment reference feature. + * + * + * @generated + */ + public static final EReference IENTITY__DISCRIMINATOR_COLUMN = eINSTANCE.getIEntity_DiscriminatorColumn(); + + /** + * The meta object literal for the 'Sequence Generator' containment reference feature. + * + * + * @generated + */ + public static final EReference IENTITY__SEQUENCE_GENERATOR = eINSTANCE.getIEntity_SequenceGenerator(); + + /** + * The meta object literal for the 'Table Generator' containment reference feature. + * + * + * @generated + */ + public static final EReference IENTITY__TABLE_GENERATOR = eINSTANCE.getIEntity_TableGenerator(); + + /** + * The meta object literal for the 'Default Discriminator Value' attribute feature. + * + * + * @generated + */ + public static final EAttribute IENTITY__DEFAULT_DISCRIMINATOR_VALUE = eINSTANCE.getIEntity_DefaultDiscriminatorValue(); + + /** + * The meta object literal for the 'Specified Discriminator Value' attribute feature. + * + * + * @generated + */ + public static final EAttribute IENTITY__SPECIFIED_DISCRIMINATOR_VALUE = eINSTANCE.getIEntity_SpecifiedDiscriminatorValue(); + + /** + * The meta object literal for the 'Discriminator Value' attribute feature. + * + * + * @generated + */ + public static final EAttribute IENTITY__DISCRIMINATOR_VALUE = eINSTANCE.getIEntity_DiscriminatorValue(); + + /** + * The meta object literal for the 'Primary Key Join Columns' containment reference list feature. + * + * + * @generated + */ + public static final EReference IENTITY__PRIMARY_KEY_JOIN_COLUMNS = eINSTANCE.getIEntity_PrimaryKeyJoinColumns(); + + /** + * The meta object literal for the 'Specified Primary Key Join Columns' containment reference list feature. + * + * + * @generated + */ + public static final EReference IENTITY__SPECIFIED_PRIMARY_KEY_JOIN_COLUMNS = eINSTANCE.getIEntity_SpecifiedPrimaryKeyJoinColumns(); + + /** + * The meta object literal for the 'Default Primary Key Join Columns' containment reference list feature. + * + * + * @generated + */ + public static final EReference IENTITY__DEFAULT_PRIMARY_KEY_JOIN_COLUMNS = eINSTANCE.getIEntity_DefaultPrimaryKeyJoinColumns(); + + /** + * The meta object literal for the 'Attribute Overrides' containment reference list feature. + * + * + * @generated + */ + public static final EReference IENTITY__ATTRIBUTE_OVERRIDES = eINSTANCE.getIEntity_AttributeOverrides(); + + /** + * The meta object literal for the 'Specified Attribute Overrides' containment reference list feature. + * + * + * @generated + */ + public static final EReference IENTITY__SPECIFIED_ATTRIBUTE_OVERRIDES = eINSTANCE.getIEntity_SpecifiedAttributeOverrides(); + + /** + * The meta object literal for the 'Default Attribute Overrides' containment reference list feature. + * + * + * @generated + */ + public static final EReference IENTITY__DEFAULT_ATTRIBUTE_OVERRIDES = eINSTANCE.getIEntity_DefaultAttributeOverrides(); + + /** + * The meta object literal for the 'Association Overrides' containment reference list feature. + * + * + * @generated + */ + public static final EReference IENTITY__ASSOCIATION_OVERRIDES = eINSTANCE.getIEntity_AssociationOverrides(); + + /** + * The meta object literal for the 'Specified Association Overrides' containment reference list feature. + * + * + * @generated + */ + public static final EReference IENTITY__SPECIFIED_ASSOCIATION_OVERRIDES = eINSTANCE.getIEntity_SpecifiedAssociationOverrides(); + + /** + * The meta object literal for the 'Default Association Overrides' containment reference list feature. + * + * + * @generated + */ + public static final EReference IENTITY__DEFAULT_ASSOCIATION_OVERRIDES = eINSTANCE.getIEntity_DefaultAssociationOverrides(); + + /** + * The meta object literal for the 'Named Queries' containment reference list feature. + * + * + * @generated + */ + public static final EReference IENTITY__NAMED_QUERIES = eINSTANCE.getIEntity_NamedQueries(); + + /** + * The meta object literal for the 'Named Native Queries' containment reference list feature. + * + * + * @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 IEmbeddable}' class. + * + * + * @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 ITable}' class. + * + * + * @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 'Name' attribute feature. + * + * + * @generated + */ + public static final EAttribute ITABLE__NAME = eINSTANCE.getITable_Name(); + + /** + * The meta object literal for the 'Specified Name' attribute feature. + * + * + * @generated + */ + public static final EAttribute ITABLE__SPECIFIED_NAME = eINSTANCE.getITable_SpecifiedName(); + + /** + * The meta object literal for the 'Default Name' attribute feature. + * + * + * @generated + */ + public static final EAttribute ITABLE__DEFAULT_NAME = eINSTANCE.getITable_DefaultName(); + + /** + * The meta object literal for the 'Catalog' attribute feature. + * + * + * @generated + */ + public static final EAttribute ITABLE__CATALOG = eINSTANCE.getITable_Catalog(); + + /** + * The meta object literal for the 'Specified Catalog' attribute feature. + * + * + * @generated + */ + public static final EAttribute ITABLE__SPECIFIED_CATALOG = eINSTANCE.getITable_SpecifiedCatalog(); + + /** + * The meta object literal for the 'Default Catalog' attribute feature. + * + * + * @generated + */ + public static final EAttribute ITABLE__DEFAULT_CATALOG = eINSTANCE.getITable_DefaultCatalog(); + + /** + * The meta object literal for the 'Schema' attribute feature. + * + * + * @generated + */ + public static final EAttribute ITABLE__SCHEMA = eINSTANCE.getITable_Schema(); + + /** + * The meta object literal for the 'Specified Schema' attribute feature. + * + * + * @generated + */ + public static final EAttribute ITABLE__SPECIFIED_SCHEMA = eINSTANCE.getITable_SpecifiedSchema(); + + /** + * The meta object literal for the 'Default Schema' attribute feature. + * + * + * @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 INamed Column}' class. + * + * + * @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 'Name' attribute feature. + * + * + * @generated + */ + public static final EAttribute INAMED_COLUMN__NAME = eINSTANCE.getINamedColumn_Name(); + + /** + * The meta object literal for the 'Specified Name' attribute feature. + * + * + * @generated + */ + public static final EAttribute INAMED_COLUMN__SPECIFIED_NAME = eINSTANCE.getINamedColumn_SpecifiedName(); + + /** + * The meta object literal for the 'Default Name' attribute feature. + * + * + * @generated + */ + public static final EAttribute INAMED_COLUMN__DEFAULT_NAME = eINSTANCE.getINamedColumn_DefaultName(); + + /** + * The meta object literal for the 'Column Definition' attribute feature. + * + * + * @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 IAbstract Column}' class. + * + * + * @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 'Unique' attribute feature. + * + * + * @generated + */ + public static final EAttribute IABSTRACT_COLUMN__UNIQUE = eINSTANCE.getIAbstractColumn_Unique(); + + /** + * The meta object literal for the 'Nullable' attribute feature. + * + * + * @generated + */ + public static final EAttribute IABSTRACT_COLUMN__NULLABLE = eINSTANCE.getIAbstractColumn_Nullable(); + + /** + * The meta object literal for the 'Insertable' attribute feature. + * + * + * @generated + */ + public static final EAttribute IABSTRACT_COLUMN__INSERTABLE = eINSTANCE.getIAbstractColumn_Insertable(); + + /** + * The meta object literal for the 'Updatable' attribute feature. + * + * + * @generated + */ + public static final EAttribute IABSTRACT_COLUMN__UPDATABLE = eINSTANCE.getIAbstractColumn_Updatable(); + + /** + * The meta object literal for the 'Table' attribute feature. + * + * + * @generated + */ + public static final EAttribute IABSTRACT_COLUMN__TABLE = eINSTANCE.getIAbstractColumn_Table(); + + /** + * The meta object literal for the 'Specified Table' attribute feature. + * + * + * @generated + */ + public static final EAttribute IABSTRACT_COLUMN__SPECIFIED_TABLE = eINSTANCE.getIAbstractColumn_SpecifiedTable(); + + /** + * The meta object literal for the 'Default Table' attribute feature. + * + * + * @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 IColumn}' class. + * + * + * @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 'Length' attribute feature. + * + * + * @generated + */ + public static final EAttribute ICOLUMN__LENGTH = eINSTANCE.getIColumn_Length(); + + /** + * The meta object literal for the 'Precision' attribute feature. + * + * + * @generated + */ + public static final EAttribute ICOLUMN__PRECISION = eINSTANCE.getIColumn_Precision(); + + /** + * The meta object literal for the 'Scale' attribute feature. + * + * + * @generated + */ + public static final EAttribute ICOLUMN__SCALE = eINSTANCE.getIColumn_Scale(); + + /** + * The meta object literal for the '{@link org.eclipse.jpt.core.internal.mappings.IColumnMapping IColumn Mapping}' class. + * + * + * @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 IBasic}' class. + * + * + * @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 'Fetch' attribute feature. + * + * + * @generated + */ + public static final EAttribute IBASIC__FETCH = eINSTANCE.getIBasic_Fetch(); + + /** + * The meta object literal for the 'Optional' attribute feature. + * + * + * @generated + */ + public static final EAttribute IBASIC__OPTIONAL = eINSTANCE.getIBasic_Optional(); + + /** + * The meta object literal for the 'Column' containment reference feature. + * + * + * @generated + */ + public static final EReference IBASIC__COLUMN = eINSTANCE.getIBasic_Column(); + + /** + * The meta object literal for the 'Lob' attribute feature. + * + * + * @generated + */ + public static final EAttribute IBASIC__LOB = eINSTANCE.getIBasic_Lob(); + + /** + * The meta object literal for the 'Temporal' attribute feature. + * + * + * @generated + */ + public static final EAttribute IBASIC__TEMPORAL = eINSTANCE.getIBasic_Temporal(); + + /** + * The meta object literal for the 'Enumerated' attribute feature. + * + * + * @generated + */ + public static final EAttribute IBASIC__ENUMERATED = eINSTANCE.getIBasic_Enumerated(); + + /** + * The meta object literal for the '{@link org.eclipse.jpt.core.internal.mappings.IId IId}' class. + * + * + * @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 'Column' containment reference feature. + * + * + * @generated + */ + public static final EReference IID__COLUMN = eINSTANCE.getIId_Column(); + + /** + * The meta object literal for the 'Generated Value' containment reference feature. + * + * + * @generated + */ + public static final EReference IID__GENERATED_VALUE = eINSTANCE.getIId_GeneratedValue(); + + /** + * The meta object literal for the 'Temporal' attribute feature. + * + * + * @generated + */ + public static final EAttribute IID__TEMPORAL = eINSTANCE.getIId_Temporal(); + + /** + * The meta object literal for the 'Table Generator' containment reference feature. + * + * + * @generated + */ + public static final EReference IID__TABLE_GENERATOR = eINSTANCE.getIId_TableGenerator(); + + /** + * The meta object literal for the 'Sequence Generator' containment reference feature. + * + * + * @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 ITransient}' class. + * + * + * @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 IVersion}' class. + * + * + * @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 'Column' containment reference feature. + * + * + * @generated + */ + public static final EReference IVERSION__COLUMN = eINSTANCE.getIVersion_Column(); + + /** + * The meta object literal for the 'Temporal' attribute feature. + * + * + * @generated + */ + public static final EAttribute IVERSION__TEMPORAL = eINSTANCE.getIVersion_Temporal(); + + /** + * The meta object literal for the '{@link org.eclipse.jpt.core.internal.mappings.IEmbeddedId IEmbedded Id}' class. + * + * + * @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 IEmbedded}' class. + * + * + * @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 'Attribute Overrides' containment reference list feature. + * + * + * @generated + */ + public static final EReference IEMBEDDED__ATTRIBUTE_OVERRIDES = eINSTANCE.getIEmbedded_AttributeOverrides(); + + /** + * The meta object literal for the 'Specified Attribute Overrides' containment reference list feature. + * + * + * @generated + */ + public static final EReference IEMBEDDED__SPECIFIED_ATTRIBUTE_OVERRIDES = eINSTANCE.getIEmbedded_SpecifiedAttributeOverrides(); + + /** + * The meta object literal for the 'Default Attribute Overrides' containment reference list feature. + * + * + * @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 IRelationship Mapping}' class. + * + * + * @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 'Target Entity' attribute feature. + * + * + * @generated + */ + public static final EAttribute IRELATIONSHIP_MAPPING__TARGET_ENTITY = eINSTANCE.getIRelationshipMapping_TargetEntity(); + + /** + * The meta object literal for the 'Specified Target Entity' attribute feature. + * + * + * @generated + */ + public static final EAttribute IRELATIONSHIP_MAPPING__SPECIFIED_TARGET_ENTITY = eINSTANCE.getIRelationshipMapping_SpecifiedTargetEntity(); + + /** + * The meta object literal for the 'Default Target Entity' attribute feature. + * + * + * @generated + */ + public static final EAttribute IRELATIONSHIP_MAPPING__DEFAULT_TARGET_ENTITY = eINSTANCE.getIRelationshipMapping_DefaultTargetEntity(); + + /** + * The meta object literal for the 'Resolved Target Entity' reference feature. + * + * + * @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 INon Owning Mapping}' class. + * + * + * @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 'Mapped By' attribute feature. + * + * + * @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 IMulti Relationship Mapping}' class. + * + * + * @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 'Fetch' attribute feature. + * + * + * @generated + */ + public static final EAttribute IMULTI_RELATIONSHIP_MAPPING__FETCH = eINSTANCE.getIMultiRelationshipMapping_Fetch(); + + /** + * The meta object literal for the 'Join Table' containment reference feature. + * + * + * @generated + */ + public static final EReference IMULTI_RELATIONSHIP_MAPPING__JOIN_TABLE = eINSTANCE.getIMultiRelationshipMapping_JoinTable(); + + /** + * The meta object literal for the 'Order By' containment reference feature. + * + * + * @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 IOne To Many}' class. + * + * + * @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 IMany To Many}' class. + * + * + * @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 ISingle Relationship Mapping}' class. + * + * + * @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 'Fetch' attribute feature. + * + * + * @generated + */ + public static final EAttribute ISINGLE_RELATIONSHIP_MAPPING__FETCH = eINSTANCE.getISingleRelationshipMapping_Fetch(); + + /** + * The meta object literal for the 'Join Columns' containment reference list feature. + * + * + * @generated + */ + public static final EReference ISINGLE_RELATIONSHIP_MAPPING__JOIN_COLUMNS = eINSTANCE.getISingleRelationshipMapping_JoinColumns(); + + /** + * The meta object literal for the 'Specified Join Columns' containment reference list feature. + * + * + * @generated + */ + public static final EReference ISINGLE_RELATIONSHIP_MAPPING__SPECIFIED_JOIN_COLUMNS = eINSTANCE.getISingleRelationshipMapping_SpecifiedJoinColumns(); + + /** + * The meta object literal for the 'Default Join Columns' containment reference list feature. + * + * + * @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 IMany To One}' class. + * + * + * @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 IOne To One}' class. + * + * + * @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 IJoin Table}' class. + * + * + * @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 'Join Columns' containment reference list feature. + * + * + * @generated + */ + public static final EReference IJOIN_TABLE__JOIN_COLUMNS = eINSTANCE.getIJoinTable_JoinColumns(); + + /** + * The meta object literal for the 'Specified Join Columns' containment reference list feature. + * + * + * @generated + */ + public static final EReference IJOIN_TABLE__SPECIFIED_JOIN_COLUMNS = eINSTANCE.getIJoinTable_SpecifiedJoinColumns(); + + /** + * The meta object literal for the 'Default Join Columns' containment reference list feature. + * + * + * @generated + */ + public static final EReference IJOIN_TABLE__DEFAULT_JOIN_COLUMNS = eINSTANCE.getIJoinTable_DefaultJoinColumns(); + + /** + * The meta object literal for the 'Inverse Join Columns' containment reference list feature. + * + * + * @generated + */ + public static final EReference IJOIN_TABLE__INVERSE_JOIN_COLUMNS = eINSTANCE.getIJoinTable_InverseJoinColumns(); + + /** + * The meta object literal for the 'Specified Inverse Join Columns' containment reference list feature. + * + * + * @generated + */ + public static final EReference IJOIN_TABLE__SPECIFIED_INVERSE_JOIN_COLUMNS = eINSTANCE.getIJoinTable_SpecifiedInverseJoinColumns(); + + /** + * The meta object literal for the 'Default Inverse Join Columns' containment reference list feature. + * + * + * @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 IAbstract Join Column}' class. + * + * + * @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 'Referenced Column Name' attribute feature. + * + * + * @generated + */ + public static final EAttribute IABSTRACT_JOIN_COLUMN__REFERENCED_COLUMN_NAME = eINSTANCE.getIAbstractJoinColumn_ReferencedColumnName(); + + /** + * The meta object literal for the 'Specified Referenced Column Name' attribute feature. + * + * + * @generated + */ + public static final EAttribute IABSTRACT_JOIN_COLUMN__SPECIFIED_REFERENCED_COLUMN_NAME = eINSTANCE.getIAbstractJoinColumn_SpecifiedReferencedColumnName(); + + /** + * The meta object literal for the 'Default Referenced Column Name' attribute feature. + * + * + * @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 IJoin Column}' class. + * + * + * @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 IOverride}' class. + * + * + * @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 'Name' attribute feature. + * + * + * @generated + */ + public static final EAttribute IOVERRIDE__NAME = eINSTANCE.getIOverride_Name(); + + /** + * The meta object literal for the '{@link org.eclipse.jpt.core.internal.mappings.IAttributeOverride IAttribute Override}' class. + * + * + * @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 'Column' containment reference feature. + * + * + * @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 IAssociation Override}' class. + * + * + * @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 'Join Columns' containment reference list feature. + * + * + * @generated + */ + public static final EReference IASSOCIATION_OVERRIDE__JOIN_COLUMNS = eINSTANCE.getIAssociationOverride_JoinColumns(); + + /** + * The meta object literal for the 'Specified Join Columns' containment reference list feature. + * + * + * @generated + */ + public static final EReference IASSOCIATION_OVERRIDE__SPECIFIED_JOIN_COLUMNS = eINSTANCE.getIAssociationOverride_SpecifiedJoinColumns(); + + /** + * The meta object literal for the 'Default Join Columns' containment reference list feature. + * + * + * @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 IDiscriminator Column}' class. + * + * + * @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 'Default Name' attribute feature. + * + * + * @generated + */ + public static final EAttribute IDISCRIMINATOR_COLUMN__DEFAULT_NAME = eINSTANCE.getIDiscriminatorColumn_DefaultName(); + + /** + * The meta object literal for the 'Specified Name' attribute feature. + * + * + * @generated + */ + public static final EAttribute IDISCRIMINATOR_COLUMN__SPECIFIED_NAME = eINSTANCE.getIDiscriminatorColumn_SpecifiedName(); + + /** + * The meta object literal for the 'Name' attribute feature. + * + * + * @generated + */ + public static final EAttribute IDISCRIMINATOR_COLUMN__NAME = eINSTANCE.getIDiscriminatorColumn_Name(); + + /** + * The meta object literal for the 'Discriminator Type' attribute feature. + * + * + * @generated + */ + public static final EAttribute IDISCRIMINATOR_COLUMN__DISCRIMINATOR_TYPE = eINSTANCE.getIDiscriminatorColumn_DiscriminatorType(); + + /** + * The meta object literal for the 'Column Definition' attribute feature. + * + * + * @generated + */ + public static final EAttribute IDISCRIMINATOR_COLUMN__COLUMN_DEFINITION = eINSTANCE.getIDiscriminatorColumn_ColumnDefinition(); + + /** + * The meta object literal for the 'Default Length' attribute feature. + * + * + * @generated + */ + public static final EAttribute IDISCRIMINATOR_COLUMN__DEFAULT_LENGTH = eINSTANCE.getIDiscriminatorColumn_DefaultLength(); + + /** + * The meta object literal for the 'Specified Length' attribute feature. + * + * + * @generated + */ + public static final EAttribute IDISCRIMINATOR_COLUMN__SPECIFIED_LENGTH = eINSTANCE.getIDiscriminatorColumn_SpecifiedLength(); + + /** + * The meta object literal for the 'Length' attribute feature. + * + * + * @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 ISecondary Table}' class. + * + * + * @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 IPrimary Key Join Column}' class. + * + * + * @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 IGenerator}' class. + * + * + * @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 'Name' attribute feature. + * + * + * @generated + */ + public static final EAttribute IGENERATOR__NAME = eINSTANCE.getIGenerator_Name(); + + /** + * The meta object literal for the 'Initial Value' attribute feature. + * + * + * @generated + */ + public static final EAttribute IGENERATOR__INITIAL_VALUE = eINSTANCE.getIGenerator_InitialValue(); + + /** + * The meta object literal for the 'Specified Initial Value' attribute feature. + * + * + * @generated + */ + public static final EAttribute IGENERATOR__SPECIFIED_INITIAL_VALUE = eINSTANCE.getIGenerator_SpecifiedInitialValue(); + + /** + * The meta object literal for the 'Default Initial Value' attribute feature. + * + * + * @generated + */ + public static final EAttribute IGENERATOR__DEFAULT_INITIAL_VALUE = eINSTANCE.getIGenerator_DefaultInitialValue(); + + /** + * The meta object literal for the 'Allocation Size' attribute feature. + * + * + * @generated + */ + public static final EAttribute IGENERATOR__ALLOCATION_SIZE = eINSTANCE.getIGenerator_AllocationSize(); + + /** + * The meta object literal for the 'Specified Allocation Size' attribute feature. + * + * + * @generated + */ + public static final EAttribute IGENERATOR__SPECIFIED_ALLOCATION_SIZE = eINSTANCE.getIGenerator_SpecifiedAllocationSize(); + + /** + * The meta object literal for the 'Default Allocation Size' attribute feature. + * + * + * @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 ITable Generator}' class. + * + * + * @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 'Table' attribute feature. + * + * + * @generated + */ + public static final EAttribute ITABLE_GENERATOR__TABLE = eINSTANCE.getITableGenerator_Table(); + + /** + * The meta object literal for the 'Specified Table' attribute feature. + * + * + * @generated + */ + public static final EAttribute ITABLE_GENERATOR__SPECIFIED_TABLE = eINSTANCE.getITableGenerator_SpecifiedTable(); + + /** + * The meta object literal for the 'Default Table' attribute feature. + * + * + * @generated + */ + public static final EAttribute ITABLE_GENERATOR__DEFAULT_TABLE = eINSTANCE.getITableGenerator_DefaultTable(); + + /** + * The meta object literal for the 'Catalog' attribute feature. + * + * + * @generated + */ + public static final EAttribute ITABLE_GENERATOR__CATALOG = eINSTANCE.getITableGenerator_Catalog(); + + /** + * The meta object literal for the 'Specified Catalog' attribute feature. + * + * + * @generated + */ + public static final EAttribute ITABLE_GENERATOR__SPECIFIED_CATALOG = eINSTANCE.getITableGenerator_SpecifiedCatalog(); + + /** + * The meta object literal for the 'Default Catalog' attribute feature. + * + * + * @generated + */ + public static final EAttribute ITABLE_GENERATOR__DEFAULT_CATALOG = eINSTANCE.getITableGenerator_DefaultCatalog(); + + /** + * The meta object literal for the 'Schema' attribute feature. + * + * + * @generated + */ + public static final EAttribute ITABLE_GENERATOR__SCHEMA = eINSTANCE.getITableGenerator_Schema(); + + /** + * The meta object literal for the 'Specified Schema' attribute feature. + * + * + * @generated + */ + public static final EAttribute ITABLE_GENERATOR__SPECIFIED_SCHEMA = eINSTANCE.getITableGenerator_SpecifiedSchema(); + + /** + * The meta object literal for the 'Default Schema' attribute feature. + * + * + * @generated + */ + public static final EAttribute ITABLE_GENERATOR__DEFAULT_SCHEMA = eINSTANCE.getITableGenerator_DefaultSchema(); + + /** + * The meta object literal for the 'Pk Column Name' attribute feature. + * + * + * @generated + */ + public static final EAttribute ITABLE_GENERATOR__PK_COLUMN_NAME = eINSTANCE.getITableGenerator_PkColumnName(); + + /** + * The meta object literal for the 'Specified Pk Column Name' attribute feature. + * + * + * @generated + */ + public static final EAttribute ITABLE_GENERATOR__SPECIFIED_PK_COLUMN_NAME = eINSTANCE.getITableGenerator_SpecifiedPkColumnName(); + + /** + * The meta object literal for the 'Default Pk Column Name' attribute feature. + * + * + * @generated + */ + public static final EAttribute ITABLE_GENERATOR__DEFAULT_PK_COLUMN_NAME = eINSTANCE.getITableGenerator_DefaultPkColumnName(); + + /** + * The meta object literal for the 'Value Column Name' attribute feature. + * + * + * @generated + */ + public static final EAttribute ITABLE_GENERATOR__VALUE_COLUMN_NAME = eINSTANCE.getITableGenerator_ValueColumnName(); + + /** + * The meta object literal for the 'Specified Value Column Name' attribute feature. + * + * + * @generated + */ + public static final EAttribute ITABLE_GENERATOR__SPECIFIED_VALUE_COLUMN_NAME = eINSTANCE.getITableGenerator_SpecifiedValueColumnName(); + + /** + * The meta object literal for the 'Default Value Column Name' attribute feature. + * + * + * @generated + */ + public static final EAttribute ITABLE_GENERATOR__DEFAULT_VALUE_COLUMN_NAME = eINSTANCE.getITableGenerator_DefaultValueColumnName(); + + /** + * The meta object literal for the 'Pk Column Value' attribute feature. + * + * + * @generated + */ + public static final EAttribute ITABLE_GENERATOR__PK_COLUMN_VALUE = eINSTANCE.getITableGenerator_PkColumnValue(); + + /** + * The meta object literal for the 'Specified Pk Column Value' attribute feature. + * + * + * @generated + */ + public static final EAttribute ITABLE_GENERATOR__SPECIFIED_PK_COLUMN_VALUE = eINSTANCE.getITableGenerator_SpecifiedPkColumnValue(); + + /** + * The meta object literal for the 'Default Pk Column Value' attribute feature. + * + * + * @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 ISequence Generator}' class. + * + * + * @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 'Sequence Name' attribute feature. + * + * + * @generated + */ + public static final EAttribute ISEQUENCE_GENERATOR__SEQUENCE_NAME = eINSTANCE.getISequenceGenerator_SequenceName(); + + /** + * The meta object literal for the 'Specified Sequence Name' attribute feature. + * + * + * @generated + */ + public static final EAttribute ISEQUENCE_GENERATOR__SPECIFIED_SEQUENCE_NAME = eINSTANCE.getISequenceGenerator_SpecifiedSequenceName(); + + /** + * The meta object literal for the 'Default Sequence Name' attribute feature. + * + * + * @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 IGenerated Value}' class. + * + * + * @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 'Strategy' attribute feature. + * + * + * @generated + */ + public static final EAttribute IGENERATED_VALUE__STRATEGY = eINSTANCE.getIGeneratedValue_Strategy(); + + /** + * The meta object literal for the 'Generator' attribute feature. + * + * + * @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 IOrder By}' class. + * + * + * @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 'Value' attribute feature. + * + * + * @generated + */ + public static final EAttribute IORDER_BY__VALUE = eINSTANCE.getIOrderBy_Value(); + + /** + * The meta object literal for the 'Type' attribute feature. + * + * + * @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 IQuery}' class. + * + * + * @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 'Name' attribute feature. + * + * + * @generated + */ + public static final EAttribute IQUERY__NAME = eINSTANCE.getIQuery_Name(); + + /** + * The meta object literal for the 'Query' attribute feature. + * + * + * @generated + */ + public static final EAttribute IQUERY__QUERY = eINSTANCE.getIQuery_Query(); + + /** + * The meta object literal for the 'Hints' containment reference list feature. + * + * + * @generated + */ + public static final EReference IQUERY__HINTS = eINSTANCE.getIQuery_Hints(); + + /** + * The meta object literal for the '{@link org.eclipse.jpt.core.internal.mappings.INamedQuery INamed Query}' class. + * + * + * @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 INamed Native Query}' class. + * + * + * @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 'Result Class' attribute feature. + * + * + * @generated + */ + public static final EAttribute INAMED_NATIVE_QUERY__RESULT_CLASS = eINSTANCE.getINamedNativeQuery_ResultClass(); + + /** + * The meta object literal for the 'Result Set Mapping' attribute feature. + * + * + * @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 IQuery Hint}' class. + * + * + * @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 'Name' attribute feature. + * + * + * @generated + */ + public static final EAttribute IQUERY_HINT__NAME = eINSTANCE.getIQueryHint_Name(); + + /** + * The meta object literal for the 'Value' attribute feature. + * + * + * @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 Default Eager Fetch Type}' enum. + * + * + * @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 Default Lazy Fetch Type}' enum. + * + * + * @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 Default False Boolean}' enum. + * + * + * @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 Default True Boolean}' enum. + * + * + * @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 Temporal Type}' enum. + * + * + * @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 Inheritance Type}' enum. + * + * + * @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 Discriminator Type}' enum. + * + * + * @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 Generation Type}' enum. + * + * + * @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 Enum Type}' enum. + * + * + * @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 Ordering Type}' enum. + * + * + * @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; + +/** + * + * A representation of the literals of the enumeration 'Ordering Type', + * and utility methods for working with them. + * + * @see org.eclipse.jpt.core.internal.mappings.JpaCoreMappingsPackage#getOrderingType() + * @model + * @generated + */ +public enum OrderingType implements Enumerator { + /** + * The 'NONE' literal object. + * + * + * @see #NONE_VALUE + * @generated + * @ordered + */ + NONE(0, "NONE", "None"), + /** + * The 'PRIMARY KEY' literal object. + * + * + * @see #PRIMARY_KEY_VALUE + * @generated + * @ordered + */ + PRIMARY_KEY(1, "PRIMARY_KEY", "Primary Key"), + /** + * The 'CUSTOM' literal object. + * + * + * @see #CUSTOM_VALUE + * @generated + * @ordered + */ + CUSTOM(2, "CUSTOM", "Custom"); + /** + * The 'NONE' literal value. + * + *

    + * If the meaning of 'NONE' literal object isn't clear, + * there really should be more of a description here... + *

    + * + * @see #NONE + * @model literal="None" + * @generated + * @ordered + */ + public static final int NONE_VALUE = 0; + + /** + * The 'PRIMARY KEY' literal value. + * + *

    + * If the meaning of 'PRIMARY KEY' literal object isn't clear, + * there really should be more of a description here... + *

    + * + * @see #PRIMARY_KEY + * @model literal="Primary Key" + * @generated + * @ordered + */ + public static final int PRIMARY_KEY_VALUE = 1; + + /** + * The 'CUSTOM' literal value. + * + *

    + * If the meaning of 'CUSTOM' literal object isn't clear, + * there really should be more of a description here... + *

    + * + * @see #CUSTOM + * @model literal="Custom" + * @generated + * @ordered + */ + public static final int CUSTOM_VALUE = 2; + + /** + * An array of all the 'Ordering Type' enumerators. + * + * + * @generated + */ + private static final OrderingType[] VALUES_ARRAY = new OrderingType[] { + NONE, PRIMARY_KEY, CUSTOM, + }; + + /** + * A public read-only list of all the 'Ordering Type' enumerators. + * + * + * @generated + */ + public static final List VALUES = Collections.unmodifiableList(Arrays.asList(VALUES_ARRAY)); + + /** + * Returns the 'Ordering Type' literal with the specified literal value. + * + * + * @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 'Ordering Type' literal with the specified name. + * + * + * @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 'Ordering Type' literal with the specified integer value. + * + * + * @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; + } + + /** + * + * + * @generated + */ + private final int value; + + /** + * + * + * @generated + */ + private final String name; + + /** + * + * + * @generated + */ + private final String literal; + + /** + * Only this class can construct instances. + * + * + * @generated + */ + private OrderingType(int value, String name, String literal) { + this.value = value; + this.name = name; + this.literal = literal; + } + + /** + * + * + * @generated + */ + public int getValue() { + return value; + } + + /** + * + * + * @generated + */ + public String getName() { + return name; + } + + /** + * + * + * @generated + */ + public String getLiteral() { + return literal; + } + + /** + * Returns the literal value of the enumerator, which is its string representation. + * + * + * @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; + +/** + * + * A representation of the literals of the enumeration 'Temporal Type', + * and utility methods for working with them. + * + * @see org.eclipse.jpt.core.internal.mappings.JpaCoreMappingsPackage#getTemporalType() + * @model + * @generated + */ +public enum TemporalType implements Enumerator { + /** + * The 'Null' literal object. + * + * + * @see #NULL_VALUE + * @generated + * @ordered + */ + NULL(0, "Null", ""), /** + * The 'DATE' literal object. + * + * + * @see #DATE_VALUE + * @generated + * @ordered + */ + DATE(1, "DATE", "Date"), /** + * The 'TIME' literal object. + * + * + * @see #TIME_VALUE + * @generated + * @ordered + */ + TIME(2, "TIME", "Time"), /** + * The 'TIMESTAMP' literal object. + * + * + * @see #TIMESTAMP_VALUE + * @generated + * @ordered + */ + TIMESTAMP(3, "TIMESTAMP", "Timestamp"); + /** + * The 'Null' literal value. + * + *

    + * If the meaning of 'Null' literal object isn't clear, + * there really should be more of a description here... + *

    + * + * @see #NULL + * @model name="Null" literal="" + * @generated + * @ordered + */ + public static final int NULL_VALUE = 0; + + /** + * The 'DATE' literal value. + * + *

    + * If the meaning of 'DATE' literal object isn't clear, + * there really should be more of a description here... + *

    + * + * @see #DATE + * @model literal="Date" + * @generated + * @ordered + */ + public static final int DATE_VALUE = 1; + + /** + * The 'TIME' literal value. + * + *

    + * If the meaning of 'TIME' literal object isn't clear, + * there really should be more of a description here... + *

    + * + * @see #TIME + * @model literal="Time" + * @generated + * @ordered + */ + public static final int TIME_VALUE = 2; + + /** + * The 'TIMESTAMP' literal value. + * + *

    + * If the meaning of 'TIMESTAMP' literal object isn't clear, + * there really should be more of a description here... + *

    + * + * @see #TIMESTAMP + * @model literal="Timestamp" + * @generated + * @ordered + */ + public static final int TIMESTAMP_VALUE = 3; + + /** + * An array of all the 'Temporal Type' enumerators. + * + * + * @generated + */ + private static final TemporalType[] VALUES_ARRAY = new TemporalType[] { + NULL, DATE, TIME, TIMESTAMP, + }; + + /** + * A public read-only list of all the 'Temporal Type' enumerators. + * + * + * @generated + */ + public static final List VALUES = Collections.unmodifiableList(Arrays.asList(VALUES_ARRAY)); + + /** + * Returns the 'Temporal Type' literal with the specified literal value. + * + * + * @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 'Temporal Type' literal with the specified name. + * + * + * @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 'Temporal Type' literal with the specified integer value. + * + * + * @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; + } + + /** + * + * + * @generated + */ + private final int value; + + /** + * + * + * @generated + */ + private final String name; + + /** + * + * + * @generated + */ + private final String literal; + + /** + * Only this class can construct instances. + * + * + * @generated + */ + private TemporalType(int value, String name, String literal) { + this.value = value; + this.name = name; + this.literal = literal; + } + + /** + * + * + * @generated + */ + public int getValue() { + return value; + } + + /** + * + * + * @generated + */ + public String getName() { + return name; + } + + /** + * + * + * @generated + */ + public String getLiteral() { + return literal; + } + + /** + * Returns the literal value of the enumerator, which is its string representation. + * + * + * @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; + +/** + * + * The Adapter Factory for the model. + * It provides an adapter createXXX method for each class of the model. + * + * @see org.eclipse.jpt.core.internal.mappings.JpaCoreMappingsPackage + * @generated + */ +public class JpaCoreMappingsAdapterFactory extends AdapterFactoryImpl +{ + /** + * The cached model package. + * + * + * @generated + */ + protected static JpaCoreMappingsPackage modelPackage; + + /** + * Creates an instance of the adapter factory. + * + * + * @generated + */ + public JpaCoreMappingsAdapterFactory() { + if (modelPackage == null) { + modelPackage = JpaCoreMappingsPackage.eINSTANCE; + } + } + + /** + * Returns whether this factory is applicable for the type of the object. + * + * This implementation returns true if the object is either the model's package or is an instance object of the model. + * + * @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 createXXX methods. + * + * + * @generated + */ + protected JpaCoreMappingsSwitch modelSwitch = new JpaCoreMappingsSwitch() { + @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 target. + * + * + * @param target the object to adapt. + * @return the adapter for the target. + * @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 IMapped Superclass}'. + * + * This default implementation returns null so that we can easily ignore cases; + * it's useful to ignore a case when inheritance will catch all the cases anyway. + * + * @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 IEntity}'. + * + * This default implementation returns null so that we can easily ignore cases; + * it's useful to ignore a case when inheritance will catch all the cases anyway. + * + * @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 ITable}'. + * + * This default implementation returns null so that we can easily ignore cases; + * it's useful to ignore a case when inheritance will catch all the cases anyway. + * + * @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 INamed Column}'. + * + * This default implementation returns null so that we can easily ignore cases; + * it's useful to ignore a case when inheritance will catch all the cases anyway. + * + * @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 IAbstract Column}'. + * + * This default implementation returns null so that we can easily ignore cases; + * it's useful to ignore a case when inheritance will catch all the cases anyway. + * + * @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 IColumn}'. + * + * This default implementation returns null so that we can easily ignore cases; + * it's useful to ignore a case when inheritance will catch all the cases anyway. + * + * @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 IColumn Mapping}'. + * + * This default implementation returns null so that we can easily ignore cases; + * it's useful to ignore a case when inheritance will catch all the cases anyway. + * + * @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 IEmbeddable}'. + * + * This default implementation returns null so that we can easily ignore cases; + * it's useful to ignore a case when inheritance will catch all the cases anyway. + * + * @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 IBasic}'. + * + * This default implementation returns null so that we can easily ignore cases; + * it's useful to ignore a case when inheritance will catch all the cases anyway. + * + * @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 IId}'. + * + * This default implementation returns null so that we can easily ignore cases; + * it's useful to ignore a case when inheritance will catch all the cases anyway. + * + * @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 ITransient}'. + * + * This default implementation returns null so that we can easily ignore cases; + * it's useful to ignore a case when inheritance will catch all the cases anyway. + * + * @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 IVersion}'. + * + * This default implementation returns null so that we can easily ignore cases; + * it's useful to ignore a case when inheritance will catch all the cases anyway. + * + * @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 IEmbedded Id}'. + * + * This default implementation returns null so that we can easily ignore cases; + * it's useful to ignore a case when inheritance will catch all the cases anyway. + * + * @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 IEmbedded}'. + * + * This default implementation returns null so that we can easily ignore cases; + * it's useful to ignore a case when inheritance will catch all the cases anyway. + * + * @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 IRelationship Mapping}'. + * + * This default implementation returns null so that we can easily ignore cases; + * it's useful to ignore a case when inheritance will catch all the cases anyway. + * + * @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 INon Owning Mapping}'. + * + * This default implementation returns null so that we can easily ignore cases; + * it's useful to ignore a case when inheritance will catch all the cases anyway. + * + * @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 IMulti Relationship Mapping}'. + * + * This default implementation returns null so that we can easily ignore cases; + * it's useful to ignore a case when inheritance will catch all the cases anyway. + * + * @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 IOne To Many}'. + * + * This default implementation returns null so that we can easily ignore cases; + * it's useful to ignore a case when inheritance will catch all the cases anyway. + * + * @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 IMany To Many}'. + * + * This default implementation returns null so that we can easily ignore cases; + * it's useful to ignore a case when inheritance will catch all the cases anyway. + * + * @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 ISingle Relationship Mapping}'. + * + * This default implementation returns null so that we can easily ignore cases; + * it's useful to ignore a case when inheritance will catch all the cases anyway. + * + * @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 IMany To One}'. + * + * This default implementation returns null so that we can easily ignore cases; + * it's useful to ignore a case when inheritance will catch all the cases anyway. + * + * @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 IOne To One}'. + * + * This default implementation returns null so that we can easily ignore cases; + * it's useful to ignore a case when inheritance will catch all the cases anyway. + * + * @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 IJoin Table}'. + * + * This default implementation returns null so that we can easily ignore cases; + * it's useful to ignore a case when inheritance will catch all the cases anyway. + * + * @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 IAbstract Join Column}'. + * + * This default implementation returns null so that we can easily ignore cases; + * it's useful to ignore a case when inheritance will catch all the cases anyway. + * + * @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 IJoin Column}'. + * + * This default implementation returns null so that we can easily ignore cases; + * it's useful to ignore a case when inheritance will catch all the cases anyway. + * + * @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 IOverride}'. + * + * This default implementation returns null so that we can easily ignore cases; + * it's useful to ignore a case when inheritance will catch all the cases anyway. + * + * @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 IAttribute Override}'. + * + * This default implementation returns null so that we can easily ignore cases; + * it's useful to ignore a case when inheritance will catch all the cases anyway. + * + * @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 IAssociation Override}'. + * + * This default implementation returns null so that we can easily ignore cases; + * it's useful to ignore a case when inheritance will catch all the cases anyway. + * + * @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 IDiscriminator Column}'. + * + * This default implementation returns null so that we can easily ignore cases; + * it's useful to ignore a case when inheritance will catch all the cases anyway. + * + * @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 ISecondary Table}'. + * + * This default implementation returns null so that we can easily ignore cases; + * it's useful to ignore a case when inheritance will catch all the cases anyway. + * + * @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 IPrimary Key Join Column}'. + * + * This default implementation returns null so that we can easily ignore cases; + * it's useful to ignore a case when inheritance will catch all the cases anyway. + * + * @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 IGenerator}'. + * + * This default implementation returns null so that we can easily ignore cases; + * it's useful to ignore a case when inheritance will catch all the cases anyway. + * + * @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 ITable Generator}'. + * + * This default implementation returns null so that we can easily ignore cases; + * it's useful to ignore a case when inheritance will catch all the cases anyway. + * + * @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 ISequence Generator}'. + * + * This default implementation returns null so that we can easily ignore cases; + * it's useful to ignore a case when inheritance will catch all the cases anyway. + * + * @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 IGenerated Value}'. + * + * This default implementation returns null so that we can easily ignore cases; + * it's useful to ignore a case when inheritance will catch all the cases anyway. + * + * @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 IOrder By}'. + * + * This default implementation returns null so that we can easily ignore cases; + * it's useful to ignore a case when inheritance will catch all the cases anyway. + * + * @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 IQuery}'. + * + * This default implementation returns null so that we can easily ignore cases; + * it's useful to ignore a case when inheritance will catch all the cases anyway. + * + * @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 INamed Query}'. + * + * This default implementation returns null so that we can easily ignore cases; + * it's useful to ignore a case when inheritance will catch all the cases anyway. + * + * @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 INamed Native Query}'. + * + * This default implementation returns null so that we can easily ignore cases; + * it's useful to ignore a case when inheritance will catch all the cases anyway. + * + * @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 IQuery Hint}'. + * + * This default implementation returns null so that we can easily ignore cases; + * it's useful to ignore a case when inheritance will catch all the cases anyway. + * + * @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 IJpa EObject}'. + * + * This default implementation returns null so that we can easily ignore cases; + * it's useful to ignore a case when inheritance will catch all the cases anyway. + * + * @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 IJpa Source Object}'. + * + * This default implementation returns null so that we can easily ignore cases; + * it's useful to ignore a case when inheritance will catch all the cases anyway. + * + * @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 IType Mapping}'. + * + * This default implementation returns null so that we can easily ignore cases; + * it's useful to ignore a case when inheritance will catch all the cases anyway. + * + * @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 IAttribute Mapping}'. + * + * This default implementation returns null so that we can easily ignore cases; + * it's useful to ignore a case when inheritance will catch all the cases anyway. + * + * @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. + * + * This default implementation returns null. + * + * @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; + +/** + * + * The Switch for the model's inheritance hierarchy. + * It supports the call {@link #doSwitch(EObject) doSwitch(object)} + * to invoke the caseXXX 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. + * + * @see org.eclipse.jpt.core.internal.mappings.JpaCoreMappingsPackage + * @generated + */ +public class JpaCoreMappingsSwitch +{ + /** + * The cached model package + * + * + * @generated + */ + protected static JpaCoreMappingsPackage modelPackage; + + /** + * Creates an instance of the switch. + * + * + * @generated + */ + public JpaCoreMappingsSwitch() { + if (modelPackage == null) { + modelPackage = JpaCoreMappingsPackage.eINSTANCE; + } + } + + /** + * Calls caseXXX for each class of the model until one returns a non null result; it yields that result. + * + * + * @return the first non-null result returned by a caseXXX call. + * @generated + */ + public T doSwitch(EObject theEObject) { + return doSwitch(theEObject.eClass(), theEObject); + } + + /** + * Calls caseXXX for each class of the model until one returns a non null result; it yields that result. + * + * + * @return the first non-null result returned by a caseXXX call. + * @generated + */ + protected T doSwitch(EClass theEClass, EObject theEObject) { + if (theEClass.eContainer() == modelPackage) { + return doSwitch(theEClass.getClassifierID(), theEObject); + } + else { + List eSuperTypes = theEClass.getESuperTypes(); + return eSuperTypes.isEmpty() ? defaultCase(theEObject) : doSwitch(eSuperTypes.get(0), theEObject); + } + } + + /** + * Calls caseXXX for each class of the model until one returns a non null result; it yields that result. + * + * + * @return the first non-null result returned by a caseXXX 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 'IMapped Superclass'. + * + * This implementation returns null; + * returning a non-null result will terminate the switch. + * + * @param object the target of the switch. + * @return the result of interpretting the object as an instance of 'IMapped Superclass'. + * @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 'IEntity'. + * + * This implementation returns null; + * returning a non-null result will terminate the switch. + * + * @param object the target of the switch. + * @return the result of interpretting the object as an instance of 'IEntity'. + * @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 'ITable'. + * + * This implementation returns null; + * returning a non-null result will terminate the switch. + * + * @param object the target of the switch. + * @return the result of interpretting the object as an instance of 'ITable'. + * @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 'INamed Column'. + * + * This implementation returns null; + * returning a non-null result will terminate the switch. + * + * @param object the target of the switch. + * @return the result of interpretting the object as an instance of 'INamed Column'. + * @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 'IAbstract Column'. + * + * This implementation returns null; + * returning a non-null result will terminate the switch. + * + * @param object the target of the switch. + * @return the result of interpretting the object as an instance of 'IAbstract Column'. + * @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 'IColumn'. + * + * This implementation returns null; + * returning a non-null result will terminate the switch. + * + * @param object the target of the switch. + * @return the result of interpretting the object as an instance of 'IColumn'. + * @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 'IColumn Mapping'. + * + * This implementation returns null; + * returning a non-null result will terminate the switch. + * + * @param object the target of the switch. + * @return the result of interpretting the object as an instance of 'IColumn Mapping'. + * @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 'IEmbeddable'. + * + * This implementation returns null; + * returning a non-null result will terminate the switch. + * + * @param object the target of the switch. + * @return the result of interpretting the object as an instance of 'IEmbeddable'. + * @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 'IBasic'. + * + * This implementation returns null; + * returning a non-null result will terminate the switch. + * + * @param object the target of the switch. + * @return the result of interpretting the object as an instance of 'IBasic'. + * @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 'IId'. + * + * This implementation returns null; + * returning a non-null result will terminate the switch. + * + * @param object the target of the switch. + * @return the result of interpretting the object as an instance of 'IId'. + * @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 'ITransient'. + * + * This implementation returns null; + * returning a non-null result will terminate the switch. + * + * @param object the target of the switch. + * @return the result of interpretting the object as an instance of 'ITransient'. + * @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 'IVersion'. + * + * This implementation returns null; + * returning a non-null result will terminate the switch. + * + * @param object the target of the switch. + * @return the result of interpretting the object as an instance of 'IVersion'. + * @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 'IEmbedded Id'. + * + * This implementation returns null; + * returning a non-null result will terminate the switch. + * + * @param object the target of the switch. + * @return the result of interpretting the object as an instance of 'IEmbedded Id'. + * @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 'IEmbedded'. + * + * This implementation returns null; + * returning a non-null result will terminate the switch. + * + * @param object the target of the switch. + * @return the result of interpretting the object as an instance of 'IEmbedded'. + * @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 'IRelationship Mapping'. + * + * This implementation returns null; + * returning a non-null result will terminate the switch. + * + * @param object the target of the switch. + * @return the result of interpretting the object as an instance of 'IRelationship Mapping'. + * @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 'INon Owning Mapping'. + * + * This implementation returns null; + * returning a non-null result will terminate the switch. + * + * @param object the target of the switch. + * @return the result of interpretting the object as an instance of 'INon Owning Mapping'. + * @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 'IMulti Relationship Mapping'. + * + * This implementation returns null; + * returning a non-null result will terminate the switch. + * + * @param object the target of the switch. + * @return the result of interpretting the object as an instance of 'IMulti Relationship Mapping'. + * @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 'IOne To Many'. + * + * This implementation returns null; + * returning a non-null result will terminate the switch. + * + * @param object the target of the switch. + * @return the result of interpretting the object as an instance of 'IOne To Many'. + * @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 'IMany To Many'. + * + * This implementation returns null; + * returning a non-null result will terminate the switch. + * + * @param object the target of the switch. + * @return the result of interpretting the object as an instance of 'IMany To Many'. + * @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 'ISingle Relationship Mapping'. + * + * This implementation returns null; + * returning a non-null result will terminate the switch. + * + * @param object the target of the switch. + * @return the result of interpretting the object as an instance of 'ISingle Relationship Mapping'. + * @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 'IMany To One'. + * + * This implementation returns null; + * returning a non-null result will terminate the switch. + * + * @param object the target of the switch. + * @return the result of interpretting the object as an instance of 'IMany To One'. + * @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 'IOne To One'. + * + * This implementation returns null; + * returning a non-null result will terminate the switch. + * + * @param object the target of the switch. + * @return the result of interpretting the object as an instance of 'IOne To One'. + * @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 'IJoin Table'. + * + * This implementation returns null; + * returning a non-null result will terminate the switch. + * + * @param object the target of the switch. + * @return the result of interpretting the object as an instance of 'IJoin Table'. + * @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 'IAbstract Join Column'. + * + * This implementation returns null; + * returning a non-null result will terminate the switch. + * + * @param object the target of the switch. + * @return the result of interpretting the object as an instance of 'IAbstract Join Column'. + * @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 'IJoin Column'. + * + * This implementation returns null; + * returning a non-null result will terminate the switch. + * + * @param object the target of the switch. + * @return the result of interpretting the object as an instance of 'IJoin Column'. + * @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 'IOverride'. + * + * This implementation returns null; + * returning a non-null result will terminate the switch. + * + * @param object the target of the switch. + * @return the result of interpretting the object as an instance of 'IOverride'. + * @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 'IAttribute Override'. + * + * This implementation returns null; + * returning a non-null result will terminate the switch. + * + * @param object the target of the switch. + * @return the result of interpretting the object as an instance of 'IAttribute Override'. + * @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 'IAssociation Override'. + * + * This implementation returns null; + * returning a non-null result will terminate the switch. + * + * @param object the target of the switch. + * @return the result of interpretting the object as an instance of 'IAssociation Override'. + * @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 'IDiscriminator Column'. + * + * This implementation returns null; + * returning a non-null result will terminate the switch. + * + * @param object the target of the switch. + * @return the result of interpretting the object as an instance of 'IDiscriminator Column'. + * @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 'ISecondary Table'. + * + * This implementation returns null; + * returning a non-null result will terminate the switch. + * + * @param object the target of the switch. + * @return the result of interpretting the object as an instance of 'ISecondary Table'. + * @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 'IPrimary Key Join Column'. + * + * This implementation returns null; + * returning a non-null result will terminate the switch. + * + * @param object the target of the switch. + * @return the result of interpretting the object as an instance of 'IPrimary Key Join Column'. + * @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 'IGenerator'. + * + * This implementation returns null; + * returning a non-null result will terminate the switch. + * + * @param object the target of the switch. + * @return the result of interpretting the object as an instance of 'IGenerator'. + * @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 'ITable Generator'. + * + * This implementation returns null; + * returning a non-null result will terminate the switch. + * + * @param object the target of the switch. + * @return the result of interpretting the object as an instance of 'ITable Generator'. + * @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 'ISequence Generator'. + * + * This implementation returns null; + * returning a non-null result will terminate the switch. + * + * @param object the target of the switch. + * @return the result of interpretting the object as an instance of 'ISequence Generator'. + * @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 'IGenerated Value'. + * + * This implementation returns null; + * returning a non-null result will terminate the switch. + * + * @param object the target of the switch. + * @return the result of interpretting the object as an instance of 'IGenerated Value'. + * @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 'IOrder By'. + * + * This implementation returns null; + * returning a non-null result will terminate the switch. + * + * @param object the target of the switch. + * @return the result of interpretting the object as an instance of 'IOrder By'. + * @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 'IQuery'. + * + * This implementation returns null; + * returning a non-null result will terminate the switch. + * + * @param object the target of the switch. + * @return the result of interpretting the object as an instance of 'IQuery'. + * @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 'INamed Query'. + * + * This implementation returns null; + * returning a non-null result will terminate the switch. + * + * @param object the target of the switch. + * @return the result of interpretting the object as an instance of 'INamed Query'. + * @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 'INamed Native Query'. + * + * This implementation returns null; + * returning a non-null result will terminate the switch. + * + * @param object the target of the switch. + * @return the result of interpretting the object as an instance of 'INamed Native Query'. + * @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 'IQuery Hint'. + * + * This implementation returns null; + * returning a non-null result will terminate the switch. + * + * @param object the target of the switch. + * @return the result of interpretting the object as an instance of 'IQuery Hint'. + * @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 'IJpa EObject'. + * + * This implementation returns null; + * returning a non-null result will terminate the switch. + * + * @param object the target of the switch. + * @return the result of interpretting the object as an instance of 'IJpa EObject'. + * @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 'IJpa Source Object'. + * + * This implementation returns null; + * returning a non-null result will terminate the switch. + * + * @param object the target of the switch. + * @return the result of interpretting the object as an instance of 'IJpa Source Object'. + * @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 'IType Mapping'. + * + * This implementation returns null; + * returning a non-null result will terminate the switch. + * + * @param object the target of the switch. + * @return the result of interpretting the object as an instance of 'IType Mapping'. + * @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 'IAttribute Mapping'. + * + * This implementation returns null; + * returning a non-null result will terminate the switch. + * + * @param object the target of the switch. + * @return the result of interpretting the object as an instance of 'IAttribute Mapping'. + * @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 'EObject'. + * + * This implementation returns null; + * returning a non-null result will terminate the switch, but this is the last case anyway. + * + * @param object the target of the switch. + * @return the result of interpretting the object as an instance of 'EObject'. + * @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 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 joinColumnContexts; + + public AssociationOverrideContext(IContext parentContext, IAssociationOverride associationOverride) { + super(parentContext); + this.associationOverride = associationOverride; + this.joinColumnContexts = buildJoinColumnContexts(); + } + + @Override + protected void initialize() { + } + + protected Collection buildJoinColumnContexts() { + Collection contexts = new ArrayList(); + 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 messages) { + super.addToMessages(messages); + + addJoinColumnMessages(messages); + } + + protected void addJoinColumnMessages(List 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 messages) { + super.addToMessages(messages); + + addColumnMessages(messages); + } + + protected void addColumnMessages(List 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 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 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 jpaFileContentProviders() { + if (this.contentProviders == null) { + this.contentProviders = new ArrayList(); + 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 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 validPersistenceXmlFiles; + private List invalidPersistenceXmlFiles; + + private Collection persistenceUnitContexts; + + public BaseJpaProjectContext(IJpaProject jpaProject) { + super(null); + project = jpaProject; + validPersistenceXmlFiles = new ArrayList(); + invalidPersistenceXmlFiles = new ArrayList(); + persistenceUnitContexts = new ArrayList(); + } + + @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 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 messages) { + super.addToMessages(messages); + addProjectLevelMessages(messages); + if (okToContinueValidation) { + for (PersistenceUnitContext context : persistenceUnitContexts) { + context.addToMessages(messages); + } + } + } + + protected void addProjectLevelMessages(List messages) { + addConnectionMessages(messages); + addNoPersistenceXmlMessage(messages); + addMultiplePersistenceXmlMessage(messages); + addInvalidPersistenceXmlContentMessage(messages); + addNoPersistenceUnitMessage(messages); + addMultiplePersistenceUnitMessage(messages); + } + + protected void addConnectionMessages(List messages) { + addNoConnectionMessage(messages); + addInactiveConnectionMessage(messages); + } + + protected boolean okToProceedForConnectionValidation = true; + + protected void addNoConnectionMessage(List 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 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 messages) { + if (validPersistenceXmlFiles.isEmpty()) { + messages.add( + JpaValidationMessages.buildMessage( + IMessage.HIGH_SEVERITY, + IJpaValidationMessages.PROJECT_NO_PERSISTENCE_XML, + project) + ); + okToContinueValidation = false; + } + } + + protected void addMultiplePersistenceXmlMessage(List messages) { + if (validPersistenceXmlFiles.size() > 1) { + messages.add( + JpaValidationMessages.buildMessage( + IMessage.HIGH_SEVERITY, + IJpaValidationMessages.PROJECT_MULTIPLE_PERSISTENCE_XML, + project) + ); + okToContinueValidation = false; + } + } + + protected void addInvalidPersistenceXmlContentMessage(List 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 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 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 generators; + + public GeneratorRepository() { + super(); + this.generators = new HashMap(); + } + + /** + * 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 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 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 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 messages) { + super.addToMessages(messages); + + addInvalidMappingMessage(messages); + } + + protected void addInvalidMappingMessage(List 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 messages) { + super.addToMessages(messages); + + addColumnMessages(messages); + } + + protected void addColumnMessages(List 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 attributeOverrideContexts; + + public JavaEmbeddedContext(IContext parentContext, JavaEmbedded javaEmbedded) { + super(parentContext, javaEmbedded); + this.attributeOverrideContexts = buildAttributeOverrideContexts(); + } + + protected Collection buildAttributeOverrideContexts() { + Collection contexts = new ArrayList(); + 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 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 attributeNames = CollectionTools.collection(getEmbedded().allOverridableAttributeNames()); + + //remove any default mappings that are not included in the attributeNames collection + Collection overridesToRemove = new ArrayList(); + 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 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 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 secondaryTableContexts; + + private Collection attributeOverrideContexts; + + private Collection associationOverrideContexts; + + private Collection 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 buildAttributeOverrideContexts() { + Collection contexts = new ArrayList(); + 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 buildAssociationOverrideContexts() { + Collection contexts = new ArrayList(); + for (IAssociationOverride associationOverride : getEntity().getDefaultAssociationOverrides()) { + contexts.add(new AssociationOverrideContext(this, associationOverride)); + } + + return contexts; + } + + protected Collection buildSecondaryTableContexts() { + Collection contexts = new ArrayList(); + for (ISecondaryTable secondaryTable : getEntity().getSecondaryTables()) { + contexts.add(new TableContext(this, secondaryTable)); + } + + return contexts; + } + + protected Collection buildPkJoinColumnContexts() { + Collection contexts = new ArrayList(); + 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 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 attributeNames = CollectionTools.collection(getEntity().allOverridableAttributeNames()); + + //remove any default mappings that are not included in the attributeNames collection + Collection overridesToRemove = new ArrayList(); + 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 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 attributeNames = CollectionTools.collection(getEntity().allOverridableAssociationNames()); + + //remove any default mappings that are not included in the attributeNames collection + Collection overridesToRemove = new ArrayList(); + 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 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 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 messages) { + addNoIdMessage(messages); + + } + + protected void addNoIdMessage(List 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 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 messages) { + super.addToMessages(messages); + + addColumnMessages(messages); + addGeneratorMessages(messages); + } + + protected void addColumnMessages(List 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 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 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 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 messages) { + super.addToMessages(messages); + + addJoinTableMessages(messages); + } + + protected void addJoinTableMessages(List 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 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 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 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 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 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 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 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 joinColumnContexts; + + protected JavaSingleRelationshipMappingContext( + IContext parentContext, JavaSingleRelationshipMapping mapping) { + super(parentContext, mapping); + this.joinColumnContexts = buildJoinColumnContexts(); + } + + protected Collection buildJoinColumnContexts() { + Collection contexts = new ArrayList(); + 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 messages) { + super.addToMessages(messages); + + addJoinColumnMessages(messages); + } + + protected void addJoinColumnMessages(List 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 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 javaPersistentAttributeContexts; + + private boolean refreshed; + + public JavaTypeContext(IContext parentContext, IJavaTypeMapping typeMapping) { + super(parentContext); + this.typeMapping = typeMapping; + this.javaPersistentAttributeContexts = buildJavaPersistentAttributeContexts(); + } + + protected Collection buildJavaPersistentAttributeContexts() { + Collection persistentAttributes = new ArrayList(); + for (Iterator 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 getJavaPersistentAttributeContexts() { + return this.javaPersistentAttributeContexts; + } + + public boolean isRefreshed() { + return this.refreshed; + } + + public boolean contains(IPersistentType persistentType) { + return persistentType == getPersistentType(); + } + + public void addToMessages(List messages) { + addAttributeMessages(messages); + } + + protected void addAttributeMessages(List 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 messages) { + super.addToMessages(messages); + + addColumnMessages(messages); + } + + protected void addColumnMessages(List 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 +{ + public JoinColumnContext(IContext parentContext, IJoinColumn column) { + super(parentContext, column); + } + + /** + * return the join column's default name; + * which is typically <attribute name>_<referenced column name> + * but, if we don't have an attribute name (e.g. in a unidirectional + * OneToMany or ManyToMany) is + * <target entity name>_<referenced column name> + */ + // _ + // or + // _ + 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 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 joinColumnContexts; + + private Collection inverseJoinColumnContexts; + + public JoinTableContext(IContext parentContext, IJoinTable table) { + super(parentContext); + this.table = table; + this.joinColumnContexts = buildJoinColumnContexts(); + this.inverseJoinColumnContexts = buildInverseJoinColumnContexts(); + } + + @Override + protected void initialize() {} + + protected Collection buildJoinColumnContexts() { + Collection contexts = new ArrayList(); + for (IJoinColumn joinColumn : this.table.getJoinColumns() ) { + contexts.add(new JoinColumnContext(this, joinColumn)); + } + return contexts; + } + + protected Collection buildInverseJoinColumnContexts() { + Collection contexts = new ArrayList(); + 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 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 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 xmlTypeContexts; + + + public MappingFileContext( + PersistenceUnitContext parentContext, XmlRootContentNode xmlRootContentNode) { + super(parentContext); + this.ormRoot = xmlRootContentNode; + this.xmlTypeContexts = buildXmlTypeContexts(); + } + + protected List buildXmlTypeContexts() { + List contexts = new ArrayList(); + 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 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 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 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 persistenceUnitMetadatas; // datas ?? datae ?? datata ?? + + private List mappingFileContexts; + private List javaPersistentTypeContexts; + //private Collection 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 duplicateJavaPersistentTypes; + + + public PersistenceUnitContext(IContext parentContext, PersistenceUnit persistenceUnit) { + super(parentContext); + this.persistenceUnit = persistenceUnit; + this.persistenceUnitMetadatas = buildPersistenceUnitMetadatas(); + this.duplicateJavaPersistentTypes = new ArrayList(); + this.mappingFileContexts = buildMappingFileContexts(); + this.javaPersistentTypeContexts = buildJavaClassesContexts(); + this.generatorRepository = buildGeneratorRepository(); + } + + @Override + protected void initialize() { + } + + private List buildPersistenceUnitMetadatas() { + List metadatas = new ArrayList(); + 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 buildMappingFileContexts() { + List contexts = new ArrayList(); + 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 buildJavaClassesContexts() { + List javaPersistentTypeContexts = new ArrayList(); + 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 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 typeContexts() { + return new CompositeIterator(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 messages) { + super.addToMessages(messages); + addMappingFileMessages(messages); + addClassMessages(messages); + } + + protected void addMappingFileMessages(List messages) { + addMultipleMetadataMessages(messages); + addUnspecifiedMappingFileMessages(messages); + addUnresolvedMappingFileMessages(messages); + addInvalidMappingFileContentMessage(messages); + addDuplicateMappingFileMessages(messages); + + for (MappingFileContext mappingFileContext : mappingFileContexts) { + mappingFileContext.addToMessages(messages); + } + } + + protected void addMultipleMetadataMessages(List 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 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 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 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 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 messages) { + addUnspecifiedClassMessages(messages); + addUnresolvedClassMessages(messages); + addInvalidClassContentMessages(messages); + addDuplicateClassMessages(messages); + + for (JavaTypeContext persistentTypeContext : javaPersistentTypeContexts) { + persistentTypeContext.addToMessages(messages); + } + } + + protected void addUnspecifiedClassMessages(List 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 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 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 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 +{ + + 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 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 messages) { + super.addToMessages(messages); + addAttributeMessages(messages); + addInvalidMappingMessage(messages); + } + + protected void addAttributeMessages(List messages) { + addUnspecifiedAttributeMessage(messages); + addUnresolvedAttributeMessage(messages); + } + + protected void addUnspecifiedAttributeMessage(List 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 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 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 messages) { + if (entityOwned()) { + addColumnMessages(messages); + } + } + + protected void addColumnMessages(List 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 attributeOverrideContexts; + + public XmlEmbeddedContext(IContext parentContext, XmlEmbedded mapping) { + super(parentContext, mapping); + this.attributeOverrideContexts = buildAttributeOverrideContexts(); + } + + protected Collection buildAttributeOverrideContexts() { + Collection contexts = new ArrayList(); + 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 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 attributeNames = CollectionTools.collection(getEmbedded().allOverridableAttributeNames()); + + //remove any default mappings that are not included in the attributeNames collection + Collection overridesToRemove = new ArrayList(); + 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 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 secondaryTableContexts; + + private JavaTable javaTable; + + private Collection attributeOverrideContexts; + + private Collection associationOverrideContexts; + + public XmlEntityContext(MappingFileContext parentContext, XmlEntity xmlEntity) { + super(parentContext, (XmlTypeMapping) xmlEntity); + this.attributeOverrideContexts = buildAttributeOverrideContexts(); + this.associationOverrideContexts = buildAssociationOverrideContexts(); + this.secondaryTableContexts = buildSecondaryTableContexts(); + } + + protected Collection buildAttributeOverrideContexts() { + Collection contexts = new ArrayList(); + 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 buildAssociationOverrideContexts() { + Collection contexts = new ArrayList(); + for (IAssociationOverride associationOverride : getEntity().getDefaultAssociationOverrides()) { + contexts.add(new AssociationOverrideContext(this, associationOverride)); + } + + return contexts; + } + + protected Collection buildSecondaryTableContexts() { + Collection contexts = new ArrayList(); + 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 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 attributeNames = CollectionTools.collection(getEntity().allOverridableAttributeNames()); + + //remove any default mappings that are not included in the attributeNames collection + Collection overridesToRemove = new ArrayList(); + 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 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 attributeNames = CollectionTools.collection(getEntity().allOverridableAssociationNames()); + + //remove any default mappings that are not included in the attributeNames collection + Collection overridesToRemove = new ArrayList(); + 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 secondaryTablesToRemove = new ArrayList(); + + for (Iterator 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 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 messages) { + addNoIdMessage(messages); + + } + + protected void addNoIdMessage(List 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 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 messages) { + super.addToMessages(messages); + + if (entityOwned()) { + addColumnMessages(messages); + } + } + + protected void addColumnMessages(List 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 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 messages) { + super.addToMessages(messages); + + if (entityOwned()) { + addJoinTableMessages(messages); + } + } + + protected void addJoinTableMessages(List 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 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 joinColumnContexts; + + protected XmlSingleRelationshipMappingContext( + IContext parentContext, XmlSingleRelationshipMapping mapping) { + super(parentContext, mapping); + this.joinColumnContexts = buildJoinColumnContexts(); + } + + protected Collection buildJoinColumnContexts() { + Collection contexts = new ArrayList(); + for (Iterator 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 messages) { + super.addToMessages(messages); + + addJoinColumnMessages(messages); + } + + protected void addJoinColumnMessages(List 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 attributeMappingContexts; + + private Collection virtualAttributeMappingContexts; + + private boolean refreshed; + + public XmlTypeContext(MappingFileContext parentContext, XmlTypeMapping xmlTypeMapping) { + super(parentContext); + this.xmlTypeMapping = xmlTypeMapping; + this.attributeMappingContexts = new ArrayList(); + this.virtualAttributeMappingContexts = new ArrayList(); + } + + 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 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 javaAttributes = javaAttributes(); + Collection javaAttributeNames = new ArrayList(); + 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 mappingsToRemove = new ArrayList(); + 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 javaAttributes() { + Collection javaAttributes = new ArrayList(); + JavaPersistentType javaPersistentType = javaPersistentType(); + if (javaPersistentType != null) { + for (Iterator i = javaPersistentType.attributes(); i.hasNext(); ) { + IPersistentAttribute persistentAttribute = i.next(); + javaAttributes.add(persistentAttribute); + } + } + return javaAttributes; + } + + @Override + public void addToMessages(List 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 messages) { + addUnspecifiedClassMessage(messages); + addUnresolvedClassMessage(messages); + } + + protected void addUnspecifiedClassMessage(List 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 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 messages) { + super.addToMessages(messages); + + if (entityOwned()) { + addColumnMessages(messages); + } + } + + protected void addColumnMessages(List 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 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 mappedTypeNames(PersistenceUnit persistenceUnit) { + return CollectionTools.sort( + new TransformationIterator(mappedTypes(persistenceUnit)) { + @Override + protected String transform(IPersistentType next) { + return next.findJdtType().getFullyQualifiedName(); + } + } + ); + } + + private Iterator mappedTypes(PersistenceUnit persistenceUnit) { + return new FilteringIterator(allJavaTypes(persistenceUnit.getJpaProject()), filter(persistenceUnit)); + } + + private Iterator allJavaTypes(IJpaProject jpaProject) { + return new TransformationIterator(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 filter(final PersistenceUnit persistenceUnit) { + return new Filter() { + 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; + +/** + * + * The Adapter Factory for the model. + * It provides an adapter createXXX method for each class of the model. + * + * @see org.eclipse.jpt.core.internal.JpaCorePackage + * @generated + */ +public class JpaCoreAdapterFactory extends AdapterFactoryImpl +{ + /** + * The cached model package. + * + * + * @generated + */ + protected static JpaCorePackage modelPackage; + + /** + * Creates an instance of the adapter factory. + * + * + * @generated + */ + public JpaCoreAdapterFactory() { + if (modelPackage == null) { + modelPackage = JpaCorePackage.eINSTANCE; + } + } + + /** + * Returns whether this factory is applicable for the type of the object. + * + * This implementation returns true if the object is either the model's package or is an instance object of the model. + * + * @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 createXXX methods. + * + * + * @generated + */ + protected JpaCoreSwitch modelSwitch = new JpaCoreSwitch() { + @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 target. + * + * + * @param target the object to adapt. + * @return the adapter for the target. + * @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 IJpa Model}'. + * + * This default implementation returns null so that we can easily ignore cases; + * it's useful to ignore a case when inheritance will catch all the cases anyway. + * + * @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 Jpa Model}'. + * + * This default implementation returns null so that we can easily ignore cases; + * it's useful to ignore a case when inheritance will catch all the cases anyway. + * + * @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 IJpa EObject}'. + * + * This default implementation returns null so that we can easily ignore cases; + * it's useful to ignore a case when inheritance will catch all the cases anyway. + * + * @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 Jpa EObject}'. + * + * This default implementation returns null so that we can easily ignore cases; + * it's useful to ignore a case when inheritance will catch all the cases anyway. + * + * @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 IJpa Project}'. + * + * This default implementation returns null so that we can easily ignore cases; + * it's useful to ignore a case when inheritance will catch all the cases anyway. + * + * @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 Jpa Project}'. + * + * This default implementation returns null so that we can easily ignore cases; + * it's useful to ignore a case when inheritance will catch all the cases anyway. + * + * @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 IJpa File}'. + * + * This default implementation returns null so that we can easily ignore cases; + * it's useful to ignore a case when inheritance will catch all the cases anyway. + * + * @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 Jpa File}'. + * + * This default implementation returns null so that we can easily ignore cases; + * it's useful to ignore a case when inheritance will catch all the cases anyway. + * + * @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 IJpa Source Object}'. + * + * This default implementation returns null so that we can easily ignore cases; + * it's useful to ignore a case when inheritance will catch all the cases anyway. + * + * @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 IXml EObject}'. + * + * This default implementation returns null so that we can easily ignore cases; + * it's useful to ignore a case when inheritance will catch all the cases anyway. + * + * @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 IJpa Content Node}'. + * + * This default implementation returns null so that we can easily ignore cases; + * it's useful to ignore a case when inheritance will catch all the cases anyway. + * + * @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 IJpa Root Content Node}'. + * + * This default implementation returns null so that we can easily ignore cases; + * it's useful to ignore a case when inheritance will catch all the cases anyway. + * + * @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 IPersistent Type}'. + * + * This default implementation returns null so that we can easily ignore cases; + * it's useful to ignore a case when inheritance will catch all the cases anyway. + * + * @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 IType Mapping}'. + * + * This default implementation returns null so that we can easily ignore cases; + * it's useful to ignore a case when inheritance will catch all the cases anyway. + * + * @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 Null Type Mapping}'. + * + * This default implementation returns null so that we can easily ignore cases; + * it's useful to ignore a case when inheritance will catch all the cases anyway. + * + * @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 IPersistent Attribute}'. + * + * This default implementation returns null so that we can easily ignore cases; + * it's useful to ignore a case when inheritance will catch all the cases anyway. + * + * @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 IAttribute Mapping}'. + * + * This default implementation returns null so that we can easily ignore cases; + * it's useful to ignore a case when inheritance will catch all the cases anyway. + * + * @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 Xml EObject}'. + * + * This default implementation returns null so that we can easily ignore cases; + * it's useful to ignore a case when inheritance will catch all the cases anyway. + * + * @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 IJpa Data Source}'. + * + * This default implementation returns null so that we can easily ignore cases; + * it's useful to ignore a case when inheritance will catch all the cases anyway. + * + * @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 Jpa Data Source}'. + * + * This default implementation returns null so that we can easily ignore cases; + * it's useful to ignore a case when inheritance will catch all the cases anyway. + * + * @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 IJpa Platform}'. + * + * This default implementation returns null so that we can easily ignore cases; + * it's useful to ignore a case when inheritance will catch all the cases anyway. + * + * @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. + * + * This default implementation returns null. + * + * @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; + +/** + * + * The Switch for the model's inheritance hierarchy. + * It supports the call {@link #doSwitch(EObject) doSwitch(object)} + * to invoke the caseXXX 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. + * + * @see org.eclipse.jpt.core.internal.JpaCorePackage + * @generated + */ +public class JpaCoreSwitch +{ + /** + * The cached model package + * + * + * @generated + */ + protected static JpaCorePackage modelPackage; + + /** + * Creates an instance of the switch. + * + * + * @generated + */ + public JpaCoreSwitch() { + if (modelPackage == null) { + modelPackage = JpaCorePackage.eINSTANCE; + } + } + + /** + * Calls caseXXX for each class of the model until one returns a non null result; it yields that result. + * + * + * @return the first non-null result returned by a caseXXX call. + * @generated + */ + public T doSwitch(EObject theEObject) { + return doSwitch(theEObject.eClass(), theEObject); + } + + /** + * Calls caseXXX for each class of the model until one returns a non null result; it yields that result. + * + * + * @return the first non-null result returned by a caseXXX call. + * @generated + */ + protected T doSwitch(EClass theEClass, EObject theEObject) { + if (theEClass.eContainer() == modelPackage) { + return doSwitch(theEClass.getClassifierID(), theEObject); + } + else { + List eSuperTypes = theEClass.getESuperTypes(); + return eSuperTypes.isEmpty() ? defaultCase(theEObject) : doSwitch(eSuperTypes.get(0), theEObject); + } + } + + /** + * Calls caseXXX for each class of the model until one returns a non null result; it yields that result. + * + * + * @return the first non-null result returned by a caseXXX 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 'IJpa Model'. + * + * This implementation returns null; + * returning a non-null result will terminate the switch. + * + * @param object the target of the switch. + * @return the result of interpretting the object as an instance of 'IJpa Model'. + * @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 'Jpa Model'. + * + * This implementation returns null; + * returning a non-null result will terminate the switch. + * + * @param object the target of the switch. + * @return the result of interpretting the object as an instance of 'Jpa Model'. + * @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 'IJpa EObject'. + * + * This implementation returns null; + * returning a non-null result will terminate the switch. + * + * @param object the target of the switch. + * @return the result of interpretting the object as an instance of 'IJpa EObject'. + * @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 'Jpa EObject'. + * + * This implementation returns null; + * returning a non-null result will terminate the switch. + * + * @param object the target of the switch. + * @return the result of interpretting the object as an instance of 'Jpa EObject'. + * @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 'IJpa Project'. + * + * This implementation returns null; + * returning a non-null result will terminate the switch. + * + * @param object the target of the switch. + * @return the result of interpretting the object as an instance of 'IJpa Project'. + * @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 'Jpa Project'. + * + * This implementation returns null; + * returning a non-null result will terminate the switch. + * + * @param object the target of the switch. + * @return the result of interpretting the object as an instance of 'Jpa Project'. + * @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 'IJpa File'. + * + * This implementation returns null; + * returning a non-null result will terminate the switch. + * + * @param object the target of the switch. + * @return the result of interpretting the object as an instance of 'IJpa File'. + * @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 'Jpa File'. + * + * This implementation returns null; + * returning a non-null result will terminate the switch. + * + * @param object the target of the switch. + * @return the result of interpretting the object as an instance of 'Jpa File'. + * @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 'IJpa Source Object'. + * + * This implementation returns null; + * returning a non-null result will terminate the switch. + * + * @param object the target of the switch. + * @return the result of interpretting the object as an instance of 'IJpa Source Object'. + * @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 'IXml EObject'. + * + * This implementation returns null; + * returning a non-null result will terminate the switch. + * + * @param object the target of the switch. + * @return the result of interpretting the object as an instance of 'IXml EObject'. + * @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 'IJpa Content Node'. + * + * This implementation returns null; + * returning a non-null result will terminate the switch. + * + * @param object the target of the switch. + * @return the result of interpretting the object as an instance of 'IJpa Content Node'. + * @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 'IJpa Root Content Node'. + * + * This implementation returns null; + * returning a non-null result will terminate the switch. + * + * @param object the target of the switch. + * @return the result of interpretting the object as an instance of 'IJpa Root Content Node'. + * @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 'IPersistent Type'. + * + * This implementation returns null; + * returning a non-null result will terminate the switch. + * + * @param object the target of the switch. + * @return the result of interpretting the object as an instance of 'IPersistent Type'. + * @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 'IType Mapping'. + * + * This implementation returns null; + * returning a non-null result will terminate the switch. + * + * @param object the target of the switch. + * @return the result of interpretting the object as an instance of 'IType Mapping'. + * @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 'Null Type Mapping'. + * + * This implementation returns null; + * returning a non-null result will terminate the switch. + * + * @param object the target of the switch. + * @return the result of interpretting the object as an instance of 'Null Type Mapping'. + * @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 'IPersistent Attribute'. + * + * This implementation returns null; + * returning a non-null result will terminate the switch. + * + * @param object the target of the switch. + * @return the result of interpretting the object as an instance of 'IPersistent Attribute'. + * @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 'IAttribute Mapping'. + * + * This implementation returns null; + * returning a non-null result will terminate the switch. + * + * @param object the target of the switch. + * @return the result of interpretting the object as an instance of 'IAttribute Mapping'. + * @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 'Xml EObject'. + * + * This implementation returns null; + * returning a non-null result will terminate the switch. + * + * @param object the target of the switch. + * @return the result of interpretting the object as an instance of 'Xml EObject'. + * @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 'IJpa Data Source'. + * + * This implementation returns null; + * returning a non-null result will terminate the switch. + * + * @param object the target of the switch. + * @return the result of interpretting the object as an instance of 'IJpa Data Source'. + * @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 'Jpa Data Source'. + * + * This implementation returns null; + * returning a non-null result will terminate the switch. + * + * @param object the target of the switch. + * @return the result of interpretting the object as an instance of 'Jpa Data Source'. + * @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 'IJpa Platform'. + * + * This implementation returns null; + * returning a non-null result will terminate the switch. + * + * @param object the target of the switch. + * @return the result of interpretting the object as an instance of 'IJpa Platform'. + * @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 'EObject'. + * + * This implementation returns null; + * returning a non-null result will terminate the switch, but this is the last case anyway. + * + * @param object the target of the switch. + * @return the result of interpretting the object as an instance of 'EObject'. + * @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); + } +} -- cgit v1.2.3