Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
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.java37
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

Back to the top