diff options
author | kmoore | 2007-05-09 22:43:59 +0000 |
---|---|---|
committer | kmoore | 2007-05-09 22:43:59 +0000 |
commit | 448d7a3164ba375a3263e7fc84ec4fe428456b4d (patch) | |
tree | 0c04e05061ecef7063532f67bfc34fecba6ad144 /jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java | |
parent | e82d09db3e726261c86fd608f0f96cde920ec065 (diff) | |
download | webtools.dali-448d7a3164ba375a3263e7fc84ec4fe428456b4d.tar.gz webtools.dali-448d7a3164ba375a3263e7fc84ec4fe428456b4d.tar.xz webtools.dali-448d7a3164ba375a3263e7fc84ec4fe428456b4d.zip |
186271 - MapKey model support for 1-m and m-m mappings , no default or validation
Diffstat (limited to 'jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java')
11 files changed, 159 insertions, 25 deletions
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 index d8ed72742c..33ea8c9570 100644 --- 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 @@ -662,6 +662,8 @@ public class JpaJavaPackage extends EPackageImpl // Create resource createResource(eNS_URI); } + + /** * <!-- begin-user-doc --> * Defines literals for the meta objects that represent 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 index 75d5b5a258..5b770407d8 100644 --- 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 @@ -21,7 +21,6 @@ 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.jdt.core.dom.Expression; import org.eclipse.jpt.core.internal.ITextRange; import org.eclipse.jpt.core.internal.content.java.JavaEObject; import org.eclipse.jpt.core.internal.jdtutility.AnnotationElementAdapter; @@ -875,7 +874,7 @@ public abstract class AbstractJavaTable extends JavaEObject implements ITable this.setSpecifiedCatalog((String) this.catalogAdapter.getValue(astRoot)); this.updateUniqueConstraintsFromJava(astRoot); } - + /** * here we just worry about getting the unique constraints lists the same size; * then we delegate to the unique constraints to synch themselves up @@ -918,7 +917,6 @@ public abstract class AbstractJavaTable extends JavaEObject implements ITable } } - public ITextRange getTextRange() { ITextRange textRange = this.member.annotationTextRange(this.daa); return (textRange != null) ? textRange : this.getOwner().getTextRange(); 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 index 5459e9d7d8..4537661960 100644 --- 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 @@ -141,6 +141,8 @@ public abstract class JavaAttributeMapping extends JavaEObject public boolean isIdMapping() { return false; } + + /** * mapping implementation of column owner */ 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 index 230f631966..9f74256e82 100644 --- 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 @@ -224,6 +224,8 @@ public class JavaAttributeOverride extends JavaOverride private static IndexedDeclarationAnnotationAdapter buildAnnotationAdapter(int index) { return new CombinationIndexedDeclarationAnnotationAdapter(SINGLE_DECLARATION_ANNOTATION_ADAPTER, MULTIPLE_DECLARATION_ANNOTATION_ADAPTER, index, JPA.ATTRIBUTE_OVERRIDE); } + + // ********** member class ********** public class ColumnOwner implements INamedColumn.Owner { 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 index c78b801a66..1896c2b8ee 100644 --- 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 @@ -1260,11 +1260,11 @@ public class JavaEntity extends JavaTypeMapping implements IEntity public boolean containsSecondaryTable(String name) { return containsSecondaryTable(name, getSecondaryTables()); } - + public boolean containsSpecifiedSecondaryTable(String name) { return containsSecondaryTable(name, getSpecifiedSecondaryTables()); } - + private boolean containsSecondaryTable(String name, List<ISecondaryTable> secondaryTables) { for (ISecondaryTable secondaryTable : secondaryTables) { String secondaryTableName = secondaryTable.getName(); @@ -2255,12 +2255,12 @@ public class JavaEntity extends JavaTypeMapping implements IEntity } return null; } - + @Override public Schema dbSchema() { return getTable().dbSchema(); } - + @Override public void updateFromJava(CompilationUnit astRoot) { this.setSpecifiedName((String) this.getType().annotationElementValue(NAME_ADAPTER, astRoot)); 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 index aa4ea47f5b..6ceaad0052 100644 --- 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 @@ -19,9 +19,15 @@ 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.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.DefaultLazyFetchType; import org.eclipse.jpt.core.internal.mappings.IJoinTable; import org.eclipse.jpt.core.internal.mappings.IMultiRelationshipMapping; @@ -106,6 +112,34 @@ public abstract class JavaMultiRelationshipMapping */ protected IOrderBy orderBy; + /** + * The default value of the '{@link #getMapKey() <em>Map Key</em>}' attribute. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @see #getMapKey() + * @generated + * @ordered + */ + protected static final String MAP_KEY_EDEFAULT = null; + + /** + * The cached value of the '{@link #getMapKey() <em>Map Key</em>}' attribute. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @see #getMapKey() + * @generated + * @ordered + */ + protected String mapKey = MAP_KEY_EDEFAULT; + + private final AnnotationAdapter mapKeyAnnotationAdapter; + + private final AnnotationElementAdapter mapKeyNameAdapter; + + public static final DeclarationAnnotationAdapter MAP_KEY_ADAPTER = new SimpleDeclarationAnnotationAdapter(JPA.MAP_KEY); + + private static final DeclarationAnnotationElementAdapter MAP_KEY_NAME_ADAPTER = buildMapKeyNameAdapter(); + protected JavaMultiRelationshipMapping() { throw new UnsupportedOperationException("Use JavaMultiRelationshipMapping(Attribute) instead"); } @@ -113,6 +147,8 @@ public abstract class JavaMultiRelationshipMapping protected JavaMultiRelationshipMapping(Attribute attribute) { super(attribute); this.mappedByAdapter = this.buildAnnotationElementAdapter(this.mappedByAdapter()); + this.mapKeyAnnotationAdapter = new MemberAnnotationAdapter(this.getAttribute(), MAP_KEY_ADAPTER); + this.mapKeyNameAdapter = new ShortCircuitAnnotationElementAdapter(attribute, MAP_KEY_NAME_ADAPTER); 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); @@ -123,6 +159,15 @@ public abstract class JavaMultiRelationshipMapping protected void notifyChanged(Notification notification) { super.notifyChanged(notification); switch (notification.getFeatureID(IMultiRelationshipMapping.class)) { + case JpaCoreMappingsPackage.IMULTI_RELATIONSHIP_MAPPING__MAP_KEY : + String mapKey = (String) notification.getNewValue(); + if (mapKey == null) { + this.mapKeyAnnotationAdapter.removeAnnotation(); + } + else { + this.mapKeyNameAdapter.setValue(mapKey); + } + break; case JpaCoreMappingsPackage.IMULTI_RELATIONSHIP_MAPPING__FETCH : this.getFetchAdapter().setValue(((DefaultLazyFetchType) notification.getNewValue()).convertToJavaAnnotationValue()); break; @@ -305,6 +350,39 @@ public abstract class JavaMultiRelationshipMapping } /** + * Returns the value of the '<em><b>Map Key</b></em>' attribute. + * <!-- begin-user-doc --> + * <p> + * If the meaning of the '<em>Map Key</em>' attribute isn't clear, + * there really should be more of a description here... + * </p> + * <!-- end-user-doc --> + * @return the value of the '<em>Map Key</em>' attribute. + * @see #setMapKey(String) + * @see org.eclipse.jpt.core.internal.content.java.mappings.JpaJavaMappingsPackage#getIMultiRelationshipMapping_MapKey() + * @model + * @generated + */ + public String getMapKey() { + return mapKey; + } + + /** + * Sets the value of the '{@link org.eclipse.jpt.core.internal.content.java.mappings.JavaMultiRelationshipMapping#getMapKey <em>Map Key</em>}' attribute. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @param value the new value of the '<em>Map Key</em>' attribute. + * @see #getMapKey() + * @generated + */ + public void setMapKey(String newMapKey) { + String oldMapKey = mapKey; + mapKey = newMapKey; + if (eNotificationRequired()) + eNotify(new ENotificationImpl(this, Notification.SET, JpaJavaMappingsPackage.JAVA_MULTI_RELATIONSHIP_MAPPING__MAP_KEY, oldMapKey, mapKey)); + } + + /** * <!-- begin-user-doc --> * <!-- end-user-doc --> * @generated @@ -336,6 +414,8 @@ public abstract class JavaMultiRelationshipMapping return getJoinTable(); case JpaJavaMappingsPackage.JAVA_MULTI_RELATIONSHIP_MAPPING__ORDER_BY : return getOrderBy(); + case JpaJavaMappingsPackage.JAVA_MULTI_RELATIONSHIP_MAPPING__MAP_KEY : + return getMapKey(); } return super.eGet(featureID, resolve, coreType); } @@ -354,6 +434,9 @@ public abstract class JavaMultiRelationshipMapping case JpaJavaMappingsPackage.JAVA_MULTI_RELATIONSHIP_MAPPING__FETCH : setFetch((DefaultLazyFetchType) newValue); return; + case JpaJavaMappingsPackage.JAVA_MULTI_RELATIONSHIP_MAPPING__MAP_KEY : + setMapKey((String) newValue); + return; } super.eSet(featureID, newValue); } @@ -372,6 +455,9 @@ public abstract class JavaMultiRelationshipMapping case JpaJavaMappingsPackage.JAVA_MULTI_RELATIONSHIP_MAPPING__FETCH : setFetch(FETCH_EDEFAULT); return; + case JpaJavaMappingsPackage.JAVA_MULTI_RELATIONSHIP_MAPPING__MAP_KEY : + setMapKey(MAP_KEY_EDEFAULT); + return; } super.eUnset(featureID); } @@ -392,6 +478,8 @@ public abstract class JavaMultiRelationshipMapping return joinTable != null; case JpaJavaMappingsPackage.JAVA_MULTI_RELATIONSHIP_MAPPING__ORDER_BY : return orderBy != null; + case JpaJavaMappingsPackage.JAVA_MULTI_RELATIONSHIP_MAPPING__MAP_KEY : + return MAP_KEY_EDEFAULT == null ? mapKey != null : !MAP_KEY_EDEFAULT.equals(mapKey); } return super.eIsSet(featureID); } @@ -419,6 +507,8 @@ public abstract class JavaMultiRelationshipMapping return JpaCoreMappingsPackage.IMULTI_RELATIONSHIP_MAPPING__JOIN_TABLE; case JpaJavaMappingsPackage.JAVA_MULTI_RELATIONSHIP_MAPPING__ORDER_BY : return JpaCoreMappingsPackage.IMULTI_RELATIONSHIP_MAPPING__ORDER_BY; + case JpaJavaMappingsPackage.JAVA_MULTI_RELATIONSHIP_MAPPING__MAP_KEY : + return JpaCoreMappingsPackage.IMULTI_RELATIONSHIP_MAPPING__MAP_KEY; default : return -1; } @@ -449,6 +539,8 @@ public abstract class JavaMultiRelationshipMapping return JpaJavaMappingsPackage.JAVA_MULTI_RELATIONSHIP_MAPPING__JOIN_TABLE; case JpaCoreMappingsPackage.IMULTI_RELATIONSHIP_MAPPING__ORDER_BY : return JpaJavaMappingsPackage.JAVA_MULTI_RELATIONSHIP_MAPPING__ORDER_BY; + case JpaCoreMappingsPackage.IMULTI_RELATIONSHIP_MAPPING__MAP_KEY : + return JpaJavaMappingsPackage.JAVA_MULTI_RELATIONSHIP_MAPPING__MAP_KEY; default : return -1; } @@ -470,6 +562,8 @@ public abstract class JavaMultiRelationshipMapping result.append(mappedBy); result.append(", fetch: "); result.append(fetch); + result.append(", mapKey: "); + result.append(mapKey); result.append(')'); return result.toString(); } @@ -480,6 +574,16 @@ public abstract class JavaMultiRelationshipMapping setMappedBy((String) this.mappedByAdapter.getValue(astRoot)); this.getJavaOrderBy().updateFromJava(astRoot); this.getJavaJoinTable().updateFromJava(astRoot); + updateMapKeyFromJava(astRoot); + } + + private void updateMapKeyFromJava(CompilationUnit astRoot) { + if (this.mapKeyAnnotationAdapter.getAnnotation(astRoot) == null) { + this.setMapKey(null); + } + else { + this.setMapKey((String) this.mapKeyNameAdapter.getValue(astRoot)); + } } private JavaJoinTable getJavaJoinTable() { @@ -529,4 +633,9 @@ public abstract class JavaMultiRelationshipMapping String elementTypeName = buildReferenceEntityTypeName(elementSignature, jdtType()); return typeNamedIsContainer(elementTypeName) ? null : elementTypeName; } + + // ********** static methods ********** + private static DeclarationAnnotationElementAdapter buildMapKeyNameAdapter() { + return new EnumDeclarationAnnotationElementAdapter(MAP_KEY_ADAPTER, JPA.MAP_KEY__NAME, false); + } } 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 index 651461299b..6b24a37507 100644 --- 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 @@ -332,12 +332,12 @@ public class JavaSecondaryTable extends AbstractJavaTable return super.eDerivedStructuralFeatureID(baseFeatureID, baseClass); } - @Override protected void updateFromJava(CompilationUnit astRoot) { super.updateFromJava(astRoot); this.updateSpecifiedPrimaryKeyJoinColumnsFromJava(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 @@ -380,7 +380,6 @@ public class JavaSecondaryTable extends AbstractJavaTable } } - /** * allow owners to verify the annotation */ @@ -414,7 +413,7 @@ public class JavaSecondaryTable extends AbstractJavaTable } private JavaPrimaryKeyJoinColumn createJavaPrimaryKeyJoinColumn(int index) { - return JavaPrimaryKeyJoinColumn.createSecondaryTableJoinColumn(this, buildPkJoinColumnOwner(), this.getMember(), index); + return JavaPrimaryKeyJoinColumn.createSecondaryTableJoinColumn(this, buildPkJoinColumnOwner(), this.getMember(), index); } protected IAbstractJoinColumn.Owner buildPkJoinColumnOwner() { 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 index 7b06ef891a..31979c4e48 100644 --- 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 @@ -142,7 +142,7 @@ public abstract class JavaSingleRelationshipMapping specifiedJoinColumnsChanged(notification); break; case JpaCoreMappingsPackage.ISINGLE_RELATIONSHIP_MAPPING__FETCH : - this.getFetchAdapter().setValue(((DefaultEagerFetchType) notification.getNewValue()).convertToJavaAnnotationValue()); + this.getFetchAdapter().setValue(((DefaultEagerFetchType) notification.getNewValue()).convertToJavaAnnotationValue()); break; default : break; 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 index 8b36d3ff94..fe1b06b438 100644 --- 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 @@ -222,7 +222,7 @@ public abstract class JavaTypeMapping extends JavaEObject public Table dbTable(String tableName) { return null; } - + public Schema dbSchema() { return null; } diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/mappings/JavaUniqueConstraint.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/mappings/JavaUniqueConstraint.java index d4b882e965..4e9ac63620 100644 --- a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/mappings/JavaUniqueConstraint.java +++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/mappings/JavaUniqueConstraint.java @@ -16,7 +16,6 @@ import org.eclipse.emf.ecore.EClass; import org.eclipse.emf.ecore.util.EDataTypeUniqueEList; import org.eclipse.jdt.core.dom.Annotation; import org.eclipse.jdt.core.dom.CompilationUnit; -import org.eclipse.jdt.core.dom.StringLiteral; import org.eclipse.jpt.core.internal.ITextRange; import org.eclipse.jpt.core.internal.content.java.JavaEObject; import org.eclipse.jpt.core.internal.jdtutility.AnnotationElementAdapter; @@ -29,12 +28,9 @@ import org.eclipse.jpt.core.internal.jdtutility.IndexedDeclarationAnnotationAdap 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.jdtutility.ShortCircuitArrayAnnotationElementAdapter; import org.eclipse.jpt.core.internal.jdtutility.SimpleDeclarationAnnotationAdapter; import org.eclipse.jpt.core.internal.jdtutility.StringArrayExpressionConverter; -import org.eclipse.jpt.core.internal.jdtutility.StringExpressionConverter; -import org.eclipse.jpt.core.internal.mappings.INonOwningMapping; import org.eclipse.jpt.core.internal.mappings.IUniqueConstraint; import org.eclipse.jpt.core.internal.mappings.JpaCoreMappingsPackage; import org.eclipse.jpt.utility.internal.CollectionTools; @@ -71,9 +67,8 @@ public class JavaUniqueConstraint extends JavaEObject private final IndexedAnnotationAdapter annotationAdapter; private final DeclarationAnnotationElementAdapter columnNamesDeclarationAdapter; - + private final AnnotationElementAdapter columnNamesAdapter; - protected JavaUniqueConstraint() { super(); @@ -88,7 +83,7 @@ public class JavaUniqueConstraint extends JavaEObject this.columnNamesDeclarationAdapter = buildArrayAnnotationElementAdapter(idaa, JPA.UNIQUE_CONSTRAINT__COLUMN_NAMES); this.columnNamesAdapter = this.buildAnnotationElementAdapter(this.columnNamesDeclarationAdapter); } - + protected AnnotationElementAdapter buildAnnotationElementAdapter(DeclarationAnnotationElementAdapter daea) { return new ShortCircuitArrayAnnotationElementAdapter(this.member, daea); } @@ -101,7 +96,6 @@ public class JavaUniqueConstraint extends JavaEObject return new ConversionDeclarationAnnotationElementAdapter(annotationAdapter, elementName, false, converter); } - @Override protected void notifyChanged(Notification notification) { super.notifyChanged(notification); @@ -271,10 +265,9 @@ public class JavaUniqueConstraint extends JavaEObject public void updateFromJava(CompilationUnit astRoot) { updateColumnNamesFromJava(astRoot); } - + private void updateColumnNamesFromJava(CompilationUnit astRoot) { String[] javaColumnNames = (String[]) this.columnNamesAdapter.getValue(astRoot); - CollectionTools.retainAll(getColumnNames(), javaColumnNames); for (int i = 0; i < javaColumnNames.length; i++) { String columnName = javaColumnNames[i]; @@ -283,7 +276,7 @@ public class JavaUniqueConstraint extends JavaEObject } } } - + // ********** persistence model -> java annotations ********** void moveAnnotation(int newIndex) { this.annotationAdapter.moveAnnotation(newIndex); @@ -321,7 +314,7 @@ public class JavaUniqueConstraint extends JavaEObject private static IndexedDeclarationAnnotationAdapter buildTableUniqueConstraintAnnotationAdapter(int index) { return new NestedIndexedDeclarationAnnotationAdapter(JavaTable.DECLARATION_ANNOTATION_ADAPTER, JPA.TABLE__UNIQUE_CONSTRAINTS, index, JPA.UNIQUE_CONSTRAINT); } - + static JavaUniqueConstraint createTableGeneratorUniqueConstraint(Member member, int index) { return JpaJavaMappingsFactory.eINSTANCE.createJavaUniqueConstraint(member, buildTableGeneratorUniqueConstraintAnnotationAdapter(index)); } 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 index 47deb6cd09..53d32db2f7 100644 --- 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 @@ -1186,13 +1186,22 @@ public class JpaJavaMappingsPackage extends EPackageImpl public static final int JAVA_MULTI_RELATIONSHIP_MAPPING__ORDER_BY = JAVA_RELATIONSHIP_MAPPING_FEATURE_COUNT + 3; /** + * The feature id for the '<em><b>Map Key</b></em>' attribute. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + * @ordered + */ + public static final int JAVA_MULTI_RELATIONSHIP_MAPPING__MAP_KEY = JAVA_RELATIONSHIP_MAPPING_FEATURE_COUNT + 4; + + /** * The number of structural features of the '<em>Java Multi Relationship Mapping</em>' class. * <!-- begin-user-doc --> * <!-- end-user-doc --> * @generated * @ordered */ - public static final int JAVA_MULTI_RELATIONSHIP_MAPPING_FEATURE_COUNT = JAVA_RELATIONSHIP_MAPPING_FEATURE_COUNT + 4; + public static final int JAVA_MULTI_RELATIONSHIP_MAPPING_FEATURE_COUNT = JAVA_RELATIONSHIP_MAPPING_FEATURE_COUNT + 5; /** * The meta object id for the '{@link org.eclipse.jpt.core.internal.content.java.mappings.JavaOneToMany <em>Java One To Many</em>}' class. @@ -1277,6 +1286,15 @@ public class JpaJavaMappingsPackage extends EPackageImpl public static final int JAVA_ONE_TO_MANY__ORDER_BY = JAVA_MULTI_RELATIONSHIP_MAPPING__ORDER_BY; /** + * The feature id for the '<em><b>Map Key</b></em>' attribute. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + * @ordered + */ + public static final int JAVA_ONE_TO_MANY__MAP_KEY = JAVA_MULTI_RELATIONSHIP_MAPPING__MAP_KEY; + + /** * The number of structural features of the '<em>Java One To Many</em>' class. * <!-- begin-user-doc --> * <!-- end-user-doc --> @@ -1368,6 +1386,15 @@ public class JpaJavaMappingsPackage extends EPackageImpl public static final int JAVA_MANY_TO_MANY__ORDER_BY = JAVA_MULTI_RELATIONSHIP_MAPPING__ORDER_BY; /** + * The feature id for the '<em><b>Map Key</b></em>' attribute. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + * @ordered + */ + public static final int JAVA_MANY_TO_MANY__MAP_KEY = JAVA_MULTI_RELATIONSHIP_MAPPING__MAP_KEY; + + /** * The number of structural features of the '<em>Java Many To Many</em>' class. * <!-- begin-user-doc --> * <!-- end-user-doc --> @@ -4527,6 +4554,8 @@ public class JpaJavaMappingsPackage extends EPackageImpl initEClass(javaQueryHintEClass, JavaQueryHint.class, "JavaQueryHint", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); initEClass(javaUniqueConstraintEClass, JavaUniqueConstraint.class, "JavaUniqueConstraint", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); } + + /** * <!-- begin-user-doc --> * Defines literals for the meta objects that represent |