Skip to main content

This CGIT instance is deprecated, and repositories have been moved to Gitlab or Github. See the repository descriptions for specific locations.

summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jpa2/resource/java/source/SourceAssociationOverride2_0Annotation.java')
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jpa2/resource/java/source/SourceAssociationOverride2_0Annotation.java142
1 files changed, 142 insertions, 0 deletions
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jpa2/resource/java/source/SourceAssociationOverride2_0Annotation.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jpa2/resource/java/source/SourceAssociationOverride2_0Annotation.java
new file mode 100644
index 0000000000..dfc227ab48
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jpa2/resource/java/source/SourceAssociationOverride2_0Annotation.java
@@ -0,0 +1,142 @@
+/*******************************************************************************
+* Copyright (c) 2009 Oracle. All rights reserved.
+* This program and the accompanying materials are made available under the
+* terms of the Eclipse Public License v1.0, which accompanies this distribution
+* and is available at http://www.eclipse.org/legal/epl-v10.html.
+*
+* Contributors:
+* Oracle - initial API and implementation
+*******************************************************************************/
+package org.eclipse.jpt.core.internal.jpa2.resource.java.source;
+
+import org.eclipse.jdt.core.dom.CompilationUnit;
+import org.eclipse.jpt.core.internal.jpa2.resource.java.NullAssociationOverrideJoinTableAnnotation;
+import org.eclipse.jpt.core.internal.resource.java.source.SourceAssociationOverrideAnnotation;
+import org.eclipse.jpt.core.internal.resource.java.source.SourceJoinTableAnnotation;
+import org.eclipse.jpt.core.internal.utility.jdt.MemberAnnotationAdapter;
+import org.eclipse.jpt.core.internal.utility.jdt.MemberIndexedAnnotationAdapter;
+import org.eclipse.jpt.core.internal.utility.jdt.NestedDeclarationAnnotationAdapter;
+import org.eclipse.jpt.core.internal.utility.jdt.NestedIndexedDeclarationAnnotationAdapter;
+import org.eclipse.jpt.core.jpa2.resource.java.AssociationOverride2_0Annotation;
+import org.eclipse.jpt.core.jpa2.resource.java.JPA;
+import org.eclipse.jpt.core.resource.java.JavaResourceNode;
+import org.eclipse.jpt.core.resource.java.JoinColumnAnnotation;
+import org.eclipse.jpt.core.resource.java.JoinTableAnnotation;
+import org.eclipse.jpt.core.resource.java.NestableJoinTableAnnotation;
+import org.eclipse.jpt.core.resource.java.JavaResourcePersistentMember.AnnotationInitializer;
+import org.eclipse.jpt.core.utility.jdt.AnnotationAdapter;
+import org.eclipse.jpt.core.utility.jdt.DeclarationAnnotationAdapter;
+import org.eclipse.jpt.core.utility.jdt.IndexedAnnotationAdapter;
+import org.eclipse.jpt.core.utility.jdt.IndexedDeclarationAnnotationAdapter;
+import org.eclipse.jpt.core.utility.jdt.Member;
+
+/**
+ * SourceSequenceGenerator2_0Annotation
+ */
+public final class SourceAssociationOverride2_0Annotation
+ extends SourceAssociationOverrideAnnotation
+ implements AssociationOverride2_0Annotation
+{
+ private final MemberAnnotationAdapter joinTableAdapter;
+ private NestableJoinTableAnnotation joinTable;
+
+
+ // ********** constructor **********
+ public SourceAssociationOverride2_0Annotation(JavaResourceNode parent, Member member, DeclarationAnnotationAdapter daa, AnnotationAdapter annotationAdapter) {
+ super(parent, member, daa, annotationAdapter);
+ this.joinTableAdapter = new MemberAnnotationAdapter(this.member, buildJoinTableAnnotationAdapter(this.daa));
+ }
+
+ @Override
+ public void initialize(CompilationUnit astRoot) {
+ super.initialize(astRoot);
+ if (this.joinTableAdapter.getAnnotation(astRoot) != null) {
+ this.joinTable = buildJoinTableAnnotation(this, this.member, this.daa);
+ this.joinTable.initialize(astRoot);
+ }
+ }
+
+ @Override
+ public void update(CompilationUnit astRoot) {
+ super.update(astRoot);
+ this.updateJoinTable(astRoot);
+ }
+
+ //************ AssociationOverride2_0Annotation implementation ****************
+
+ // ***** joinTable
+ public JoinTableAnnotation getJoinTable() {
+ return this.joinTable;
+ }
+
+ public NestableJoinTableAnnotation addJoinTable() {
+ NestableJoinTableAnnotation table = buildJoinTableAnnotation(this, this.member, this.daa);
+ table.newAnnotation();
+ this.setJoinTable(table);
+ return table;
+ }
+
+ public JoinColumnAnnotation addJoinTable(AnnotationInitializer initializer) {
+ NestableJoinTableAnnotation table = buildJoinTableAnnotation(this, this.member, this.daa);
+ JoinColumnAnnotation joinColumn = (JoinColumnAnnotation) initializer.initializeAnnotation(table);
+ table.newAnnotation();
+ this.setJoinTable(table);
+ return joinColumn;
+ }
+
+ public void removeJoinTable() {
+ this.joinTable.removeAnnotation();
+ setJoinTable(null);
+ }
+
+ private void setJoinTable(NestableJoinTableAnnotation joinTable) {
+ JoinTableAnnotation old = this.joinTable;
+ this.joinTable = joinTable;
+ this.firePropertyChanged(JOIN_TABLE_PROPERTY, old, joinTable);
+ }
+
+ public JoinTableAnnotation getNonNullJoinTable() {
+ return (this.joinTable != null) ? this.joinTable : new NullAssociationOverrideJoinTableAnnotation(this);
+ }
+
+ private void updateJoinTable(CompilationUnit astRoot) {
+ if (this.joinTableAdapter.getAnnotation(astRoot) == null) {
+ this.setJoinTable(null);
+ } else {
+ if (this.joinTable == null) {
+ NestableJoinTableAnnotation table = buildJoinTableAnnotation(this, this.member, this.daa);
+ table.initialize(astRoot);
+ this.setJoinTable(table);
+ } else {
+ this.joinTable.update(astRoot);
+ }
+ }
+ }
+
+
+ // ********** static methods **********
+
+ public static SourceAssociationOverride2_0Annotation buildAssociationOverride(JavaResourceNode parent, Member member) {
+ return new SourceAssociationOverride2_0Annotation(parent, member, DECLARATION_ANNOTATION_ADAPTER, new MemberAnnotationAdapter(member, DECLARATION_ANNOTATION_ADAPTER));
+ }
+
+ static NestableJoinTableAnnotation buildJoinTableAnnotation(JavaResourceNode parent, Member member, DeclarationAnnotationAdapter associationOverrideAnnotationAdapter) {
+ return new SourceJoinTableAnnotation(parent, member, buildJoinTableAnnotationAdapter(associationOverrideAnnotationAdapter));
+ }
+
+ static DeclarationAnnotationAdapter buildJoinTableAnnotationAdapter(DeclarationAnnotationAdapter associationOverrideAnnotationAdapter) {
+ return new NestedDeclarationAnnotationAdapter(associationOverrideAnnotationAdapter, JPA.ASSOCIATION_OVERRIDE__JOIN_TABLE, org.eclipse.jpt.core.resource.java.JPA.JOIN_TABLE);
+ }
+
+
+ static SourceAssociationOverrideAnnotation buildNestedAssociationOverride(JavaResourceNode parent, Member member, int index, DeclarationAnnotationAdapter attributeOverridesAdapter) {
+ IndexedDeclarationAnnotationAdapter idaa = buildNestedDeclarationAnnotationAdapter(index, attributeOverridesAdapter);
+ IndexedAnnotationAdapter annotationAdapter = new MemberIndexedAnnotationAdapter(member, idaa);
+ return new SourceAssociationOverride2_0Annotation(parent, member, idaa, annotationAdapter);
+ }
+
+ protected static IndexedDeclarationAnnotationAdapter buildNestedDeclarationAnnotationAdapter(int index, DeclarationAnnotationAdapter attributeOverridesAdapter) {
+ return new NestedIndexedDeclarationAnnotationAdapter(attributeOverridesAdapter, index, org.eclipse.jpt.core.resource.java.JPA.ASSOCIATION_OVERRIDE);
+ }
+
+} \ No newline at end of file

Back to the top