diff options
Diffstat (limited to 'jpa_diagram_editor/plugins/org.eclipse.jpt.jpadiagrameditor.ui/src/org/eclipse/jpt/jpadiagrameditor/ui/internal/feature/CreateManyToOneUniDirRelationFeature.java')
-rw-r--r-- | jpa_diagram_editor/plugins/org.eclipse.jpt.jpadiagrameditor.ui/src/org/eclipse/jpt/jpadiagrameditor/ui/internal/feature/CreateManyToOneUniDirRelationFeature.java | 31 |
1 files changed, 27 insertions, 4 deletions
diff --git a/jpa_diagram_editor/plugins/org.eclipse.jpt.jpadiagrameditor.ui/src/org/eclipse/jpt/jpadiagrameditor/ui/internal/feature/CreateManyToOneUniDirRelationFeature.java b/jpa_diagram_editor/plugins/org.eclipse.jpt.jpadiagrameditor.ui/src/org/eclipse/jpt/jpadiagrameditor/ui/internal/feature/CreateManyToOneUniDirRelationFeature.java index 8355aa6b07..7280e65ef8 100644 --- a/jpa_diagram_editor/plugins/org.eclipse.jpt.jpadiagrameditor.ui/src/org/eclipse/jpt/jpadiagrameditor/ui/internal/feature/CreateManyToOneUniDirRelationFeature.java +++ b/jpa_diagram_editor/plugins/org.eclipse.jpt.jpadiagrameditor.ui/src/org/eclipse/jpt/jpadiagrameditor/ui/internal/feature/CreateManyToOneUniDirRelationFeature.java @@ -15,12 +15,17 @@ *******************************************************************************/ package org.eclipse.jpt.jpadiagrameditor.ui.internal.feature; +import java.util.HashSet; +import java.util.Set; + import org.eclipse.graphiti.mm.pictograms.PictogramElement; import org.eclipse.jpt.jpa.core.context.java.JavaPersistentType; import org.eclipse.jpt.jpadiagrameditor.ui.internal.i18n.JPAEditorMessages; import org.eclipse.jpt.jpadiagrameditor.ui.internal.provider.IJPAEditorFeatureProvider; import org.eclipse.jpt.jpadiagrameditor.ui.internal.provider.JPAEditorImageProvider; +import org.eclipse.jpt.jpadiagrameditor.ui.internal.relations.HasReferanceRelation; import org.eclipse.jpt.jpadiagrameditor.ui.internal.relations.ManyToOneUniDirRelation; +import org.eclipse.jpt.jpadiagrameditor.ui.internal.util.JPAEditorConstants; import org.eclipse.jpt.jpadiagrameditor.ui.internal.util.JPAEditorUtil; import org.eclipse.jpt.jpadiagrameditor.ui.internal.util.JpaArtifactFactory; @@ -34,7 +39,7 @@ public class CreateManyToOneUniDirRelationFeature extends CreateManyToOneRelatio } @Override - public ManyToOneUniDirRelation createRelation(IJPAEditorFeatureProvider fp, PictogramElement source, PictogramElement target) { + public ManyToOneUniDirRelation createRelation(IJPAEditorFeatureProvider fp, PictogramElement source, PictogramElement target, JavaPersistentType embeddingEntity) { JavaPersistentType owner = (JavaPersistentType)(getBusinessObjectForPictogramElement(source)); JavaPersistentType inverse = (JavaPersistentType)(getBusinessObjectForPictogramElement(target)); @@ -43,14 +48,32 @@ public class CreateManyToOneUniDirRelationFeature extends CreateManyToOneRelatio if (JpaArtifactFactory.instance().isMethodAnnotated(owner)) nameWithNonCapitalLetter = JPAEditorUtil.produceValidAttributeName(attributeName); String attributeText = JPAEditorUtil.produceUniqueAttributeName(owner, nameWithNonCapitalLetter); - ManyToOneUniDirRelation relation = new ManyToOneUniDirRelation(fp, owner, inverse, attributeText, true, - getFeatureProvider().getCompilationUnit(owner), - getFeatureProvider().getCompilationUnit(inverse)); + ManyToOneUniDirRelation relation = new ManyToOneUniDirRelation(fp, owner, inverse, attributeText, true); return relation; } public String getCreateImageId() { return JPAEditorImageProvider.ICON_MANY_TO_ONE_1_DIR; + } + + @Override + protected boolean isRelationshipPossible() { + if(JpaArtifactFactory.instance().hasEmbeddableAnnotation(owner)) { + Set<HasReferanceRelation> refs = JpaArtifactFactory.instance().findAllHasReferenceRelsByEmbeddableWithEntity(owner, getFeatureProvider()); + if (refs.isEmpty()){ + return false; + } else { + for (HasReferanceRelation ref : refs) { + HashSet<String> annotations = JpaArtifactFactory.instance().getAnnotationNames(ref.getEmbeddedAnnotatedAttribute()); + for (String annotationName : annotations) { + if (annotationName.equals(JPAEditorConstants.ANNOTATION_EMBEDDED_ID)) { + return false; + } + } + } + } + } + return true; } }
\ No newline at end of file |