diff options
Diffstat (limited to 'jpa_diagram_editor/plugins/org.eclipse.jpt.jpadiagrameditor.ui/src/org/eclipse/jpt/jpadiagrameditor/ui/internal/feature/CreateOneToOneUniDirRelationFeature.java')
-rw-r--r-- | jpa_diagram_editor/plugins/org.eclipse.jpt.jpadiagrameditor.ui/src/org/eclipse/jpt/jpadiagrameditor/ui/internal/feature/CreateOneToOneUniDirRelationFeature.java | 37 |
1 files changed, 31 insertions, 6 deletions
diff --git a/jpa_diagram_editor/plugins/org.eclipse.jpt.jpadiagrameditor.ui/src/org/eclipse/jpt/jpadiagrameditor/ui/internal/feature/CreateOneToOneUniDirRelationFeature.java b/jpa_diagram_editor/plugins/org.eclipse.jpt.jpadiagrameditor.ui/src/org/eclipse/jpt/jpadiagrameditor/ui/internal/feature/CreateOneToOneUniDirRelationFeature.java index 5c1d766c85..1e556db826 100644 --- a/jpa_diagram_editor/plugins/org.eclipse.jpt.jpadiagrameditor.ui/src/org/eclipse/jpt/jpadiagrameditor/ui/internal/feature/CreateOneToOneUniDirRelationFeature.java +++ b/jpa_diagram_editor/plugins/org.eclipse.jpt.jpadiagrameditor.ui/src/org/eclipse/jpt/jpadiagrameditor/ui/internal/feature/CreateOneToOneUniDirRelationFeature.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.OneToOneUniDirRelation; +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; @@ -35,7 +40,7 @@ public class CreateOneToOneUniDirRelationFeature extends CreateOneToOneRelationF @Override public OneToOneUniDirRelation createRelation(IJPAEditorFeatureProvider fp, PictogramElement source, - PictogramElement target) { + PictogramElement target, JavaPersistentType embeddingEntity) { JavaPersistentType owner = (JavaPersistentType)(getBusinessObjectForPictogramElement(source)); JavaPersistentType inverse = (JavaPersistentType)(getBusinessObjectForPictogramElement(target)); @@ -45,14 +50,34 @@ public class CreateOneToOneUniDirRelationFeature extends CreateOneToOneRelationF if (JpaArtifactFactory.instance().isMethodAnnotated(owner)) nameWithNonCapitalLetter = JPAEditorUtil.produceValidAttributeName(name); String attribTxt = JPAEditorUtil.produceUniqueAttributeName(owner, nameWithNonCapitalLetter); - OneToOneUniDirRelation res = new OneToOneUniDirRelation(fp, owner, inverse, attribTxt, true, - getFeatureProvider().getCompilationUnit(owner), - getFeatureProvider().getCompilationUnit(inverse)); + OneToOneUniDirRelation res = new OneToOneUniDirRelation(fp, owner, inverse, attribTxt, true); return res; } public String getCreateImageId() { return JPAEditorImageProvider.ICON_ONE_TO_ONE_1_DIR; - } - + } + + /* (non-Javadoc) + * @see org.eclipse.jpt.jpadiagrameditor.ui.internal.feature.CreateRelationFeature#isRelationshipPossible() + */ + @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 |