Author: dgeraskov
Date: 2011-07-20 08:28:40 -0400 (Wed, 20 Jul 2011)
New Revision: 33073
Added:
trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.core/src/org/jboss/tools/hibernate/jpt/core/internal/context/definition/HibernateJavaOneToManyMappingDefinition.java
trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.core/src/org/jboss/tools/hibernate/jpt/core/internal/context/java/HibernateJavaManyToOneMapping.java
trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.core/src/org/jboss/tools/hibernate/jpt/core/internal/context/java/HibernateJavaOneToOneMapping.java
Removed:
trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.core/src/org/jboss/tools/hibernate/jpt/core/internal/context/java/AbstractHibernateJavaManyToOneMapping.java
trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.core/src/org/jboss/tools/hibernate/jpt/core/internal/context/java/AbstractHibernateJavaOneToOneMapping.java
trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.core/src/org/jboss/tools/hibernate/jpt/core/internal/context/java/HibernateJavaManyToOneMapping.java
trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.core/src/org/jboss/tools/hibernate/jpt/core/internal/context/java/HibernateJavaOneToOneMapping.java
Modified:
trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.core/src/org/jboss/tools/hibernate/jpt/core/internal/HibernateAbstractJpaFactory.java
trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.core/src/org/jboss/tools/hibernate/jpt/core/internal/HibernateJpaFactory.java
trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.core/src/org/jboss/tools/hibernate/jpt/core/internal/context/ForeignKey.java
trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.core/src/org/jboss/tools/hibernate/jpt/core/internal/context/Messages.java
trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.core/src/org/jboss/tools/hibernate/jpt/core/internal/context/Messages.properties
trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.core/src/org/jboss/tools/hibernate/jpt/core/internal/context/definition/HibernateJavaEntityDefinition.java
trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.core/src/org/jboss/tools/hibernate/jpt/core/internal/context/definition/HibernateJavaManyToManyMappingDefinition.java
trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.core/src/org/jboss/tools/hibernate/jpt/core/internal/context/definition/HibernateJavaOneToOneMappingDefinition.java
trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.core/src/org/jboss/tools/hibernate/jpt/core/internal/context/java/ForeignKeyImpl.java
trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.core/src/org/jboss/tools/hibernate/jpt/core/internal/context/java/HibernateJavaBasicMappingImpl.java
trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.core/src/org/jboss/tools/hibernate/jpt/core/internal/context/java/HibernateJavaEntity.java
trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.core/src/org/jboss/tools/hibernate/jpt/core/internal/context/java/HibernateJavaEntityImpl.java
trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.core/src/org/jboss/tools/hibernate/jpt/core/internal/context/java/HibernateJavaManyToManyMapping.java
trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.core/src/org/jboss/tools/hibernate/jpt/core/internal/context/java/HibernateJavaOneToManyMapping.java
Log:
https://issues.jboss.org/browse/JBIDE-9375
validate @ForeignKey inverseName for ManyToMany mapping
Modified:
trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.core/src/org/jboss/tools/hibernate/jpt/core/internal/HibernateAbstractJpaFactory.java
===================================================================
---
trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.core/src/org/jboss/tools/hibernate/jpt/core/internal/HibernateAbstractJpaFactory.java 2011-07-20
12:27:40 UTC (rev 33072)
+++
trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.core/src/org/jboss/tools/hibernate/jpt/core/internal/HibernateAbstractJpaFactory.java 2011-07-20
12:28:40 UTC (rev 33073)
@@ -14,8 +14,10 @@
import org.eclipse.jpt.jpa.core.JpaProject;
import org.eclipse.jpt.jpa.core.context.JpaContextNode;
import org.eclipse.jpt.jpa.core.context.Table.Owner;
+import org.eclipse.jpt.jpa.core.context.java.JavaAttributeMapping;
import org.eclipse.jpt.jpa.core.context.java.JavaBasicMapping;
import org.eclipse.jpt.jpa.core.context.java.JavaColumn;
+import org.eclipse.jpt.jpa.core.context.java.JavaConverter;
import org.eclipse.jpt.jpa.core.context.java.JavaDiscriminatorColumn;
import org.eclipse.jpt.jpa.core.context.java.JavaEntity;
import org.eclipse.jpt.jpa.core.context.java.JavaGeneratorContainer;
@@ -25,6 +27,9 @@
import org.eclipse.jpt.jpa.core.context.java.JavaJoinTableRelationshipStrategy;
import org.eclipse.jpt.jpa.core.context.java.JavaJpaContextNode;
import org.eclipse.jpt.jpa.core.context.java.JavaManyToManyMapping;
+import org.eclipse.jpt.jpa.core.context.java.JavaManyToOneMapping;
+import org.eclipse.jpt.jpa.core.context.java.JavaOneToManyMapping;
+import org.eclipse.jpt.jpa.core.context.java.JavaOneToOneMapping;
import org.eclipse.jpt.jpa.core.context.java.JavaPersistentAttribute;
import org.eclipse.jpt.jpa.core.context.java.JavaPersistentType;
import org.eclipse.jpt.jpa.core.context.java.JavaQueryContainer;
@@ -47,8 +52,11 @@
import
org.jboss.tools.hibernate.jpt.core.internal.context.java.HibernateJavaJoinColumnImpl;
import
org.jboss.tools.hibernate.jpt.core.internal.context.java.HibernateJavaJoinTableImpl;
import
org.jboss.tools.hibernate.jpt.core.internal.context.java.HibernateJavaManyToManyMapping;
+import
org.jboss.tools.hibernate.jpt.core.internal.context.java.HibernateJavaManyToOneMapping;
import
org.jboss.tools.hibernate.jpt.core.internal.context.java.HibernateJavaNamedNativeQuery;
import org.jboss.tools.hibernate.jpt.core.internal.context.java.HibernateJavaNamedQuery;
+import
org.jboss.tools.hibernate.jpt.core.internal.context.java.HibernateJavaOneToManyMapping;
+import
org.jboss.tools.hibernate.jpt.core.internal.context.java.HibernateJavaOneToOneMapping;
import org.jboss.tools.hibernate.jpt.core.internal.context.java.HibernateJavaParameter;
import
org.jboss.tools.hibernate.jpt.core.internal.context.java.HibernateJavaQueryContainerImpl;
import
org.jboss.tools.hibernate.jpt.core.internal.context.java.HibernateJavaSecondaryTableImpl;
@@ -65,6 +73,7 @@
import org.jboss.tools.hibernate.jpt.core.internal.context.java.JavaIndex;
import org.jboss.tools.hibernate.jpt.core.internal.context.java.JavaParameter;
import org.jboss.tools.hibernate.jpt.core.internal.context.java.JavaType;
+import org.jboss.tools.hibernate.jpt.core.internal.context.java.JavaTypeConverterImpl;
import org.jboss.tools.hibernate.jpt.core.internal.context.java.JavaTypeDef;
import org.jboss.tools.hibernate.jpt.core.internal.context.java.JavaTypeDefImpl;
import org.jboss.tools.hibernate.jpt.core.internal.context.java.TypeImpl;
@@ -135,11 +144,28 @@
public JavaColumn buildJavaColumn(JavaJpaContextNode parent, JavaColumn.Owner owner) {
return new HibernateJavaColumnImpl(parent, owner);
}
+
+ @Override
+ public JavaManyToOneMapping buildJavaManyToOneMapping(
+ JavaPersistentAttribute parent) {
+ return new HibernateJavaManyToOneMapping(parent);
+ }
@Override
+ public JavaOneToOneMapping buildJavaOneToOneMapping(
+ JavaPersistentAttribute parent) {
+ return new HibernateJavaOneToOneMapping(parent);
+ }
+
+ @Override
+ public JavaOneToManyMapping buildJavaOneToManyMapping(
+ JavaPersistentAttribute parent) {
+ return new HibernateJavaOneToManyMapping(parent);
+ }
+
+ @Override
public JavaManyToManyMapping buildJavaManyToManyMapping(
JavaPersistentAttribute parent) {
- //same for jpa2_0 and 1_0
return new HibernateJavaManyToManyMapping(parent);
}
@@ -204,4 +230,9 @@
return new TypeImpl(parent, annotation);
}
+ public JavaConverter buildJavaTypeConverter(JavaAttributeMapping parent,
+ TypeAnnotation converterAnnotation) {
+ return new JavaTypeConverterImpl(parent, converterAnnotation);
+ }
+
}
Modified:
trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.core/src/org/jboss/tools/hibernate/jpt/core/internal/HibernateJpaFactory.java
===================================================================
---
trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.core/src/org/jboss/tools/hibernate/jpt/core/internal/HibernateJpaFactory.java 2011-07-20
12:27:40 UTC (rev 33072)
+++
trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.core/src/org/jboss/tools/hibernate/jpt/core/internal/HibernateJpaFactory.java 2011-07-20
12:28:40 UTC (rev 33073)
@@ -11,16 +11,9 @@
package org.jboss.tools.hibernate.jpt.core.internal;
import org.eclipse.jpt.jpa.core.context.java.JavaEmbeddable;
-import org.eclipse.jpt.jpa.core.context.java.JavaManyToOneMapping;
-import org.eclipse.jpt.jpa.core.context.java.JavaOneToManyMapping;
-import org.eclipse.jpt.jpa.core.context.java.JavaOneToOneMapping;
-import org.eclipse.jpt.jpa.core.context.java.JavaPersistentAttribute;
import org.eclipse.jpt.jpa.core.context.java.JavaPersistentType;
import org.eclipse.jpt.jpa.core.resource.java.EmbeddableAnnotation;
import org.jboss.tools.hibernate.jpt.core.internal.context.java.HibernateJavaEmbeddable;
-import
org.jboss.tools.hibernate.jpt.core.internal.context.java.HibernateJavaManyToOneMapping;
-import
org.jboss.tools.hibernate.jpt.core.internal.context.java.HibernateJavaOneToManyMapping;
-import
org.jboss.tools.hibernate.jpt.core.internal.context.java.HibernateJavaOneToOneMapping;
/**
@@ -36,22 +29,4 @@
return new HibernateJavaEmbeddable(parent, embeddableAnnotation);
}
- @Override
- public JavaManyToOneMapping buildJavaManyToOneMapping(
- JavaPersistentAttribute parent) {
- return new HibernateJavaManyToOneMapping(parent);
- }
-
- @Override
- public JavaOneToOneMapping buildJavaOneToOneMapping(
- JavaPersistentAttribute parent) {
- return new HibernateJavaOneToOneMapping(parent);
- }
-
- @Override
- public JavaOneToManyMapping buildJavaOneToManyMapping(
- JavaPersistentAttribute parent) {
- return new HibernateJavaOneToManyMapping(parent);
- }
-
}
Modified:
trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.core/src/org/jboss/tools/hibernate/jpt/core/internal/context/ForeignKey.java
===================================================================
---
trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.core/src/org/jboss/tools/hibernate/jpt/core/internal/context/ForeignKey.java 2011-07-20
12:27:40 UTC (rev 33072)
+++
trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.core/src/org/jboss/tools/hibernate/jpt/core/internal/context/ForeignKey.java 2011-07-20
12:28:40 UTC (rev 33073)
@@ -11,14 +11,14 @@
package org.jboss.tools.hibernate.jpt.core.internal.context;
-import org.eclipse.jpt.jpa.core.context.JpaContextNode;
+import org.eclipse.jpt.jpa.core.context.java.JavaJpaContextNode;
import org.jboss.tools.hibernate.jpt.core.internal.context.java.ForeignKeyAnnotation;
/**
* @author Dmitry Geraskov
*
*/
-public interface ForeignKey extends JpaContextNode {
+public interface ForeignKey extends JavaJpaContextNode {
String getName();
void setName(String name);
Modified:
trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.core/src/org/jboss/tools/hibernate/jpt/core/internal/context/Messages.java
===================================================================
---
trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.core/src/org/jboss/tools/hibernate/jpt/core/internal/context/Messages.java 2011-07-20
12:27:40 UTC (rev 33072)
+++
trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.core/src/org/jboss/tools/hibernate/jpt/core/internal/context/Messages.java 2011-07-20
12:28:40 UTC (rev 33073)
@@ -38,4 +38,6 @@
String TYPE_CLASS_NOT_FOUND = "TYPE_CLASS_NOT_FOUND"; //$NON-NLS-1$
+ String NAME_CANT_BE_EMPTY = "NAME_CANT_BE_EMPTY";//$NON-NLS-1$
+
}
Modified:
trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.core/src/org/jboss/tools/hibernate/jpt/core/internal/context/Messages.properties
===================================================================
---
trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.core/src/org/jboss/tools/hibernate/jpt/core/internal/context/Messages.properties 2011-07-20
12:27:40 UTC (rev 33072)
+++
trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.core/src/org/jboss/tools/hibernate/jpt/core/internal/context/Messages.properties 2011-07-20
12:28:40 UTC (rev 33073)
@@ -8,4 +8,5 @@
CC_NOT_EXISTS= Console configuration \"{0}\" does not exist.
TYPE_CANT_BE_EMPTY=Type could not be empty.
USER_TYPE_INTERFACE = Type class \"{0}\" should implement interface
\"org.hibernate.usertype.UserType\".
-TYPE_CLASS_NOT_FOUND = Type class \"{0}\" could not be found.
\ No newline at end of file
+TYPE_CLASS_NOT_FOUND = Type class \"{0}\" could not be found.
+NAME_CANT_BE_EMPTY = Name could not be empty.
\ No newline at end of file
Modified:
trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.core/src/org/jboss/tools/hibernate/jpt/core/internal/context/definition/HibernateJavaEntityDefinition.java
===================================================================
---
trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.core/src/org/jboss/tools/hibernate/jpt/core/internal/context/definition/HibernateJavaEntityDefinition.java 2011-07-20
12:27:40 UTC (rev 33072)
+++
trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.core/src/org/jboss/tools/hibernate/jpt/core/internal/context/definition/HibernateJavaEntityDefinition.java 2011-07-20
12:28:40 UTC (rev 33073)
@@ -117,7 +117,6 @@
Hibernate.NAMED_NATIVE_QUERY,
Hibernate.NAMED_NATIVE_QUERIES,
Hibernate.DISCRIMINATOR_FORMULA,
- Hibernate.FOREIGN_KEY,
};
protected static final Iterable<String> SUPPORTING_ANNOTATION_NAMES = new
ArrayIterable<String>(SUPPORTING_ANNOTATION_NAMES_ARRAY);
Modified:
trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.core/src/org/jboss/tools/hibernate/jpt/core/internal/context/definition/HibernateJavaManyToManyMappingDefinition.java
===================================================================
---
trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.core/src/org/jboss/tools/hibernate/jpt/core/internal/context/definition/HibernateJavaManyToManyMappingDefinition.java 2011-07-20
12:27:40 UTC (rev 33072)
+++
trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.core/src/org/jboss/tools/hibernate/jpt/core/internal/context/definition/HibernateJavaManyToManyMappingDefinition.java 2011-07-20
12:28:40 UTC (rev 33073)
@@ -17,10 +17,10 @@
import org.eclipse.jpt.jpa.core.context.java.JavaAttributeMapping;
import org.eclipse.jpt.jpa.core.context.java.JavaAttributeMappingDefinition;
import org.eclipse.jpt.jpa.core.context.java.JavaPersistentAttribute;
-import org.eclipse.jpt.jpa.core.resource.java.JoinColumnAnnotation;
-import org.eclipse.jpt.jpa.core.resource.java.JoinColumnsAnnotation;
import org.eclipse.jpt.jpa.core.resource.java.JoinTableAnnotation;
-import org.eclipse.jpt.jpa.core.resource.java.ManyToOneAnnotation;
+import org.eclipse.jpt.jpa.core.resource.java.ManyToManyAnnotation;
+import org.eclipse.jpt.jpa.core.resource.java.MapKeyAnnotation;
+import org.eclipse.jpt.jpa.core.resource.java.OrderByAnnotation;
import org.jboss.tools.hibernate.jpt.core.internal.context.basic.Hibernate;
/**
@@ -48,11 +48,11 @@
}
public String getKey() {
- return MappingKeys.MANY_TO_ONE_ATTRIBUTE_MAPPING_KEY;
+ return MappingKeys.MANY_TO_MANY_ATTRIBUTE_MAPPING_KEY;
}
public String getAnnotationName() {
- return ManyToOneAnnotation.ANNOTATION_NAME;
+ return ManyToManyAnnotation.ANNOTATION_NAME;
}
public boolean isSpecified(JavaPersistentAttribute persistentAttribute) {
@@ -70,13 +70,13 @@
private static final String[] SUPPORTING_ANNOTATION_NAMES_ARRAY = new String[] {
JoinTableAnnotation.ANNOTATION_NAME,
- JoinColumnAnnotation.ANNOTATION_NAME,
- JoinColumnsAnnotation.ANNOTATION_NAME
+ MapKeyAnnotation.ANNOTATION_NAME,
+ OrderByAnnotation.ANNOTATION_NAME
};
private static final Iterable<String> SUPPORTING_ANNOTATION_NAMES = new
ArrayIterable<String>(SUPPORTING_ANNOTATION_NAMES_ARRAY);
public JavaAttributeMapping buildMapping(JavaPersistentAttribute persistentAttribute,
JpaFactory factory) {
- return factory.buildJavaManyToOneMapping(persistentAttribute);
+ return factory.buildJavaManyToManyMapping(persistentAttribute);
}
@Override
Added:
trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.core/src/org/jboss/tools/hibernate/jpt/core/internal/context/definition/HibernateJavaOneToManyMappingDefinition.java
===================================================================
---
trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.core/src/org/jboss/tools/hibernate/jpt/core/internal/context/definition/HibernateJavaOneToManyMappingDefinition.java
(rev 0)
+++
trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.core/src/org/jboss/tools/hibernate/jpt/core/internal/context/definition/HibernateJavaOneToManyMappingDefinition.java 2011-07-20
12:28:40 UTC (rev 33073)
@@ -0,0 +1,91 @@
+/*******************************************************************************
+ * Copyright (c) 2011 Red Hat, Inc.
+ * Distributed under license by Red Hat, Inc. All rights reserved.
+ * This program is 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
+ *
+ * Contributor:
+ * Red Hat, Inc. - initial API and implementation
+ ******************************************************************************/
+package org.jboss.tools.hibernate.jpt.core.internal.context.definition;
+
+import org.eclipse.jpt.common.utility.internal.iterables.ArrayIterable;
+import org.eclipse.jpt.common.utility.internal.iterables.CompositeIterable;
+import org.eclipse.jpt.jpa.core.JpaFactory;
+import org.eclipse.jpt.jpa.core.MappingKeys;
+import org.eclipse.jpt.jpa.core.context.java.JavaAttributeMapping;
+import org.eclipse.jpt.jpa.core.context.java.JavaAttributeMappingDefinition;
+import org.eclipse.jpt.jpa.core.context.java.JavaPersistentAttribute;
+import org.eclipse.jpt.jpa.core.resource.java.JoinColumnAnnotation;
+import org.eclipse.jpt.jpa.core.resource.java.JoinColumnsAnnotation;
+import org.eclipse.jpt.jpa.core.resource.java.JoinTableAnnotation;
+import org.eclipse.jpt.jpa.core.resource.java.OneToOneAnnotation;
+import org.eclipse.jpt.jpa.core.resource.java.PrimaryKeyJoinColumnAnnotation;
+import org.eclipse.jpt.jpa.core.resource.java.PrimaryKeyJoinColumnsAnnotation;
+import org.jboss.tools.hibernate.jpt.core.internal.context.basic.Hibernate;
+
+/**
+ * @author Dmitry Geraskov (geraskov(a)gmail.com)
+ *
+ */
+public class HibernateJavaOneToManyMappingDefinition implements
JavaAttributeMappingDefinition
+{
+ // singleton
+ private static final HibernateJavaOneToManyMappingDefinition INSTANCE = new
HibernateJavaOneToManyMappingDefinition();
+
+ /**
+ * Return the singleton.
+ */
+ public static HibernateJavaOneToManyMappingDefinition instance() {
+ return INSTANCE;
+ }
+
+ /**
+ * Enforce singleton usage
+ */
+ private HibernateJavaOneToManyMappingDefinition() {
+ super();
+ }
+
+ public String getKey() {
+ return MappingKeys.ONE_TO_ONE_ATTRIBUTE_MAPPING_KEY;
+ }
+
+ public String getAnnotationName() {
+ return OneToOneAnnotation.ANNOTATION_NAME;
+ }
+
+ public boolean isSpecified(JavaPersistentAttribute persistentAttribute) {
+ return
persistentAttribute.getResourcePersistentAttribute().getAnnotation(this.getAnnotationName())
!= null;
+ }
+
+ protected static final String[] HIBERNATE_ANNOTATION_NAMES_ARRAY = new String[] {
+ Hibernate.FOREIGN_KEY,
+ };
+
+ private static final String[] SUPPORTING_ANNOTATION_NAMES_ARRAY = new String[] {
+ JoinTableAnnotation.ANNOTATION_NAME,
+ JoinColumnAnnotation.ANNOTATION_NAME,
+ JoinColumnsAnnotation.ANNOTATION_NAME,
+ PrimaryKeyJoinColumnAnnotation.ANNOTATION_NAME,
+ PrimaryKeyJoinColumnsAnnotation.ANNOTATION_NAME
+ };
+ private static final Iterable<String> SUPPORTING_ANNOTATION_NAMES = new
ArrayIterable<String>(SUPPORTING_ANNOTATION_NAMES_ARRAY);
+
+ @Override
+ public Iterable<String> getSupportingAnnotationNames() {
+ return new CompositeIterable<String>(SUPPORTING_ANNOTATION_NAMES, new
ArrayIterable<String>(HIBERNATE_ANNOTATION_NAMES_ARRAY));
+ }
+
+ public JavaAttributeMapping buildMapping(JavaPersistentAttribute persistentAttribute,
JpaFactory factory) {
+ return factory.buildJavaOneToOneMapping(persistentAttribute);
+ }
+
+ @Override
+ public String toString() {
+ return this.getClass().getSimpleName();
+ }
+
+
+}
\ No newline at end of file
Modified:
trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.core/src/org/jboss/tools/hibernate/jpt/core/internal/context/definition/HibernateJavaOneToOneMappingDefinition.java
===================================================================
---
trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.core/src/org/jboss/tools/hibernate/jpt/core/internal/context/definition/HibernateJavaOneToOneMappingDefinition.java 2011-07-20
12:27:40 UTC (rev 33072)
+++
trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.core/src/org/jboss/tools/hibernate/jpt/core/internal/context/definition/HibernateJavaOneToOneMappingDefinition.java 2011-07-20
12:28:40 UTC (rev 33073)
@@ -20,9 +20,9 @@
import org.eclipse.jpt.jpa.core.resource.java.JoinColumnAnnotation;
import org.eclipse.jpt.jpa.core.resource.java.JoinColumnsAnnotation;
import org.eclipse.jpt.jpa.core.resource.java.JoinTableAnnotation;
-import org.eclipse.jpt.jpa.core.resource.java.OneToOneAnnotation;
-import org.eclipse.jpt.jpa.core.resource.java.PrimaryKeyJoinColumnAnnotation;
-import org.eclipse.jpt.jpa.core.resource.java.PrimaryKeyJoinColumnsAnnotation;
+import org.eclipse.jpt.jpa.core.resource.java.MapKeyAnnotation;
+import org.eclipse.jpt.jpa.core.resource.java.OneToManyAnnotation;
+import org.eclipse.jpt.jpa.core.resource.java.OrderByAnnotation;
import org.jboss.tools.hibernate.jpt.core.internal.context.basic.Hibernate;
/**
@@ -49,11 +49,11 @@
}
public String getKey() {
- return MappingKeys.ONE_TO_ONE_ATTRIBUTE_MAPPING_KEY;
+ return MappingKeys.ONE_TO_MANY_ATTRIBUTE_MAPPING_KEY;
}
public String getAnnotationName() {
- return OneToOneAnnotation.ANNOTATION_NAME;
+ return OneToManyAnnotation.ANNOTATION_NAME;
}
public boolean isSpecified(JavaPersistentAttribute persistentAttribute) {
@@ -66,10 +66,10 @@
private static final String[] SUPPORTING_ANNOTATION_NAMES_ARRAY = new String[] {
JoinTableAnnotation.ANNOTATION_NAME,
+ MapKeyAnnotation.ANNOTATION_NAME,
+ OrderByAnnotation.ANNOTATION_NAME,
JoinColumnAnnotation.ANNOTATION_NAME,
- JoinColumnsAnnotation.ANNOTATION_NAME,
- PrimaryKeyJoinColumnAnnotation.ANNOTATION_NAME,
- PrimaryKeyJoinColumnsAnnotation.ANNOTATION_NAME
+ JoinColumnsAnnotation.ANNOTATION_NAME
};
private static final Iterable<String> SUPPORTING_ANNOTATION_NAMES = new
ArrayIterable<String>(SUPPORTING_ANNOTATION_NAMES_ARRAY);
@@ -79,7 +79,7 @@
}
public JavaAttributeMapping buildMapping(JavaPersistentAttribute persistentAttribute,
JpaFactory factory) {
- return factory.buildJavaOneToOneMapping(persistentAttribute);
+ return factory.buildJavaOneToManyMapping(persistentAttribute);
}
@Override
Deleted:
trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.core/src/org/jboss/tools/hibernate/jpt/core/internal/context/java/AbstractHibernateJavaManyToOneMapping.java
===================================================================
---
trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.core/src/org/jboss/tools/hibernate/jpt/core/internal/context/java/AbstractHibernateJavaManyToOneMapping.java 2011-07-20
12:27:40 UTC (rev 33072)
+++
trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.core/src/org/jboss/tools/hibernate/jpt/core/internal/context/java/AbstractHibernateJavaManyToOneMapping.java 2011-07-20
12:28:40 UTC (rev 33073)
@@ -1,175 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2011 Red Hat, Inc.
- * Distributed under license by Red Hat, Inc. All rights reserved.
- * This program is 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
- *
- * Contributor:
- * Red Hat, Inc. - initial API and implementation
- ******************************************************************************/
-package org.jboss.tools.hibernate.jpt.core.internal.context.java;
-
-import java.util.Iterator;
-import java.util.List;
-
-import org.eclipse.jdt.core.dom.CompilationUnit;
-import org.eclipse.jpt.common.core.utility.TextRange;
-import org.eclipse.jpt.jpa.core.context.java.JavaPersistentAttribute;
-import org.eclipse.jpt.jpa.core.internal.context.java.AbstractJavaManyToOneMapping;
-import org.eclipse.jpt.jpa.db.Table;
-import org.eclipse.wst.validation.internal.provisional.core.IMessage;
-import org.eclipse.wst.validation.internal.provisional.core.IReporter;
-import org.jboss.tools.hibernate.jpt.core.internal.HibernateAbstractJpaFactory;
-import org.jboss.tools.hibernate.jpt.core.internal.context.ForeignKey;
-import org.jboss.tools.hibernate.jpt.core.internal.context.ForeignKeyHolder;
-import
org.jboss.tools.hibernate.jpt.core.internal.context.HibernatePersistenceUnit.LocalMessage;
-import org.jboss.tools.hibernate.jpt.core.internal.context.Messages;
-
-/**
- *
- * @author Dmitry Geraskov (geraskov(a)gmail.com)
- *
- */
-public abstract class AbstractHibernateJavaManyToOneMapping extends
-AbstractJavaManyToOneMapping implements ForeignKeyHolder {
-
- protected ForeignKey foreignKey;
-
- public AbstractHibernateJavaManyToOneMapping(JavaPersistentAttribute parent) {
- super(parent);
- }
-
- /*@Override
- protected void addSupportingAnnotationNamesTo(Vector<String> names) {
- super.addSupportingAnnotationNamesTo(names);
- names.add(Hibernate.FOREIGN_KEY);
- }*/
-
- @Override
- protected HibernateAbstractJpaFactory getJpaFactory() {
- return (HibernateAbstractJpaFactory) super.getJpaFactory();
- }
-
- @Override
- public void synchronizeWithResourceModel() {
- super.synchronizeWithResourceModel();
- this.syncForeignKey();
- }
-
- @Override
- public void update() {
- super.update();
- if (foreignKey != null){
- this.foreignKey.update();
- }
- }
-
- // ********************* foreignKey **************
-
- protected void syncForeignKey() {
- ForeignKeyAnnotation annotation = getForeignKeyAnnotation();
- if (annotation == null) {
- if (getForeignKey() != null) {
- setForeignKey(null);
- }
- }
- else {
- if (getForeignKey() == null) {
- setForeignKey(buildForeignKey(annotation));
- }
- else {
- if ((this.foreignKey != null) && (this.foreignKey.getForeignKeyAnnotation()
== annotation)) {
- this.foreignKey.synchronizeWithResourceModel();
- } else {
- this.setForeignKey(this.buildForeignKey(annotation));
- }
- }
- }
- }
-
- @Override
- public ForeignKey addForeignKey() {
- if (getForeignKey() != null) {
- throw new IllegalStateException("foreignKey already exists"); //$NON-NLS-1$
- }
- ForeignKeyAnnotation annotation = (ForeignKeyAnnotation)
this.getResourcePersistentAttribute().addAnnotation(ForeignKeyAnnotation.ANNOTATION_NAME);
- ForeignKey foreignKey = buildForeignKey(annotation);
- setForeignKey(foreignKey);
- return this.foreignKey;
- }
-
- @Override
- public ForeignKey getForeignKey() {
- return this.foreignKey;
- }
-
- protected void setForeignKey(ForeignKey newForeignKey) {
- ForeignKey oldForeignKey = this.foreignKey;
- this.foreignKey = newForeignKey;
- firePropertyChanged(FOREIGN_KEY_PROPERTY, oldForeignKey, newForeignKey);
- }
-
- @Override
- public void removeForeignKey() {
- if (getForeignKey() == null) {
- throw new IllegalStateException("foreignKey does not exist, cannot be
removed"); //$NON-NLS-1$
- }
- this.getResourcePersistentAttribute().removeAnnotation(ForeignKeyAnnotation.ANNOTATION_NAME);
- setForeignKey(null);
- }
-
- protected ForeignKey buildForeignKey() {
- ForeignKeyAnnotation annotation = this.getForeignKeyAnnotation();
- return (annotation == null) ? null : this.buildForeignKey(annotation);
- }
-
- protected ForeignKey buildForeignKey(ForeignKeyAnnotation annotation) {
- return getJpaFactory().buildForeignKey(this, annotation);
- }
-
- protected ForeignKeyAnnotation getForeignKeyAnnotation() {
- return (ForeignKeyAnnotation)
this.getResourcePersistentAttribute().getAnnotation(ForeignKeyAnnotation.ANNOTATION_NAME);
- }
-
- public Table getForeignKeyDbTable() {
- return getTypeMapping().getPrimaryDbTable();
- }
-
- @Override
- public void validate(List<IMessage> messages, IReporter reporter,
- CompilationUnit astRoot) {
- super.validate(messages, reporter, astRoot);
- this.validateForeignKey(messages, astRoot);
- }
-
- protected void validateForeignKey(List<IMessage> messages,
- CompilationUnit astRoot) {
- Table table = getTypeMapping().getPrimaryDbTable();
- if (!validatesAgainstDatabase() || this.foreignKey == null
- || table == null) {
- return;
- }
- Iterator<org.eclipse.jpt.jpa.db.ForeignKey> fks = table.getForeignKeys()
- .iterator();
- while (fks.hasNext()) {
- org.eclipse.jpt.jpa.db.ForeignKey fk = fks
- .next();
- if (this.foreignKey.getName().equals(fk.getIdentifier())) {
- return;
- }
- }
- TextRange textRange = this.getForeignKeyAnnotation().getNameTextRange(
- astRoot);
- IMessage message = new LocalMessage(IMessage.HIGH_SEVERITY,
- Messages.UNRESOLVED_FOREIGN_KEY_NAME, new String[] {
- this.foreignKey.getName(),
- getTypeMapping().getPrimaryTableName() },
- this.foreignKey);
- message.setLineNo(textRange.getLineNumber());
- message.setOffset(textRange.getOffset());
- message.setLength(textRange.getLength());
- messages.add(message);
- }
-
-}
Deleted:
trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.core/src/org/jboss/tools/hibernate/jpt/core/internal/context/java/AbstractHibernateJavaOneToOneMapping.java
===================================================================
---
trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.core/src/org/jboss/tools/hibernate/jpt/core/internal/context/java/AbstractHibernateJavaOneToOneMapping.java 2011-07-20
12:27:40 UTC (rev 33072)
+++
trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.core/src/org/jboss/tools/hibernate/jpt/core/internal/context/java/AbstractHibernateJavaOneToOneMapping.java 2011-07-20
12:28:40 UTC (rev 33073)
@@ -1,173 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2011 Red Hat, Inc.
- * Distributed under license by Red Hat, Inc. All rights reserved.
- * This program is 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
- *
- * Contributor:
- * Red Hat, Inc. - initial API and implementation
- ******************************************************************************/
-package org.jboss.tools.hibernate.jpt.core.internal.context.java;
-
-import java.util.Iterator;
-import java.util.List;
-
-import org.eclipse.jdt.core.dom.CompilationUnit;
-import org.eclipse.jpt.common.core.utility.TextRange;
-import org.eclipse.jpt.jpa.core.context.java.JavaPersistentAttribute;
-import org.eclipse.jpt.jpa.core.internal.context.java.AbstractJavaOneToOneMapping;
-import org.eclipse.jpt.jpa.db.Table;
-import org.eclipse.wst.validation.internal.provisional.core.IMessage;
-import org.eclipse.wst.validation.internal.provisional.core.IReporter;
-import org.jboss.tools.hibernate.jpt.core.internal.HibernateAbstractJpaFactory;
-import org.jboss.tools.hibernate.jpt.core.internal.context.ForeignKey;
-import org.jboss.tools.hibernate.jpt.core.internal.context.ForeignKeyHolder;
-import
org.jboss.tools.hibernate.jpt.core.internal.context.HibernatePersistenceUnit.LocalMessage;
-import org.jboss.tools.hibernate.jpt.core.internal.context.Messages;
-/**
- *
- * @author Dmitry Geraskov (geraskov(a)gmail.com)
- *
- */
-public abstract class AbstractHibernateJavaOneToOneMapping extends
- AbstractJavaOneToOneMapping implements ForeignKeyHolder {
-
- protected ForeignKey foreignKey;
-
- public AbstractHibernateJavaOneToOneMapping(JavaPersistentAttribute parent) {
- super(parent);
- }
-
- /*@Override
- protected void addSupportingAnnotationNamesTo(Vector<String> names) {
- super.addSupportingAnnotationNamesTo(names);
- names.add(Hibernate.FOREIGN_KEY);
- }*/
-
- @Override
- protected HibernateAbstractJpaFactory getJpaFactory() {
- return (HibernateAbstractJpaFactory) super.getJpaFactory();
- }
-
- @Override
- public void synchronizeWithResourceModel() {
- super.synchronizeWithResourceModel();
- this.syncForeignKey();
- }
-
- @Override
- public void update() {
- super.update();
- if (foreignKey != null){
- this.foreignKey.update();
- }
- }
-
- // ********************* foreignKey **************
-
- protected void syncForeignKey() {
- ForeignKeyAnnotation annotation = getForeignKeyAnnotation();
- if (annotation == null) {
- if (getForeignKey() != null) {
- setForeignKey(null);
- }
- }
- else {
- if (getForeignKey() == null) {
- setForeignKey(buildForeignKey(annotation));
- }
- else {
- if ((this.foreignKey != null) && (this.foreignKey.getForeignKeyAnnotation()
== annotation)) {
- this.foreignKey.synchronizeWithResourceModel();
- } else {
- this.setForeignKey(this.buildForeignKey(annotation));
- }
- }
- }
- }
-
- @Override
- public ForeignKey addForeignKey() {
- if (getForeignKey() != null) {
- throw new IllegalStateException("foreignKey already exists"); //$NON-NLS-1$
- }
- ForeignKeyAnnotation annotation = (ForeignKeyAnnotation)
this.getResourcePersistentAttribute().addAnnotation(ForeignKeyAnnotation.ANNOTATION_NAME);
- ForeignKey foreignKey = buildForeignKey(annotation);
- setForeignKey(foreignKey);
- return this.foreignKey;
- }
-
- @Override
- public ForeignKey getForeignKey() {
- return this.foreignKey;
- }
-
- protected void setForeignKey(ForeignKey newForeignKey) {
- ForeignKey oldForeignKey = this.foreignKey;
- this.foreignKey = newForeignKey;
- firePropertyChanged(FOREIGN_KEY_PROPERTY, oldForeignKey, newForeignKey);
- }
-
- @Override
- public void removeForeignKey() {
- if (getForeignKey() == null) {
- throw new IllegalStateException("foreignKey does not exist, cannot be
removed"); //$NON-NLS-1$
- }
- this.getResourcePersistentAttribute().removeAnnotation(ForeignKeyAnnotation.ANNOTATION_NAME);
- setForeignKey(null);
- }
-
- protected ForeignKey buildForeignKey() {
- ForeignKeyAnnotation annotation = this.getForeignKeyAnnotation();
- return (annotation == null) ? null : this.buildForeignKey(annotation);
- }
-
- protected ForeignKey buildForeignKey(ForeignKeyAnnotation annotation) {
- return getJpaFactory().buildForeignKey(this, annotation);
- }
-
- protected ForeignKeyAnnotation getForeignKeyAnnotation() {
- return (ForeignKeyAnnotation)
this.getResourcePersistentAttribute().getAnnotation(ForeignKeyAnnotation.ANNOTATION_NAME);
- }
-
- public Table getForeignKeyDbTable() {
- return getTypeMapping().getPrimaryDbTable();
- }
-
- @Override
- public void validate(List<IMessage> messages, IReporter reporter,
- CompilationUnit astRoot) {
- super.validate(messages, reporter, astRoot);
- this.validateForeignKey(messages, astRoot);
- }
-
- protected void validateForeignKey(List<IMessage> messages,
- CompilationUnit astRoot) {
- Table table = getTypeMapping().getPrimaryDbTable();
- if (!validatesAgainstDatabase() || this.foreignKey == null
- || table == null) {
- return;
- }
- Iterator<org.eclipse.jpt.jpa.db.ForeignKey> fks = table.getForeignKeys()
- .iterator();
- while (fks.hasNext()) {
- org.eclipse.jpt.jpa.db.ForeignKey fk = fks
- .next();
- if (this.foreignKey.getName().equals(fk.getIdentifier())) {
- return;
- }
- }
- TextRange textRange = this.getForeignKeyAnnotation().getNameTextRange(
- astRoot);
- IMessage message = new LocalMessage(IMessage.HIGH_SEVERITY,
- Messages.UNRESOLVED_FOREIGN_KEY_NAME, new String[] {
- this.foreignKey.getName(),
- getTypeMapping().getPrimaryTableName() },
- this.foreignKey);
- message.setLineNo(textRange.getLineNumber());
- message.setOffset(textRange.getOffset());
- message.setLength(textRange.getLength());
- messages.add(message);
- }
-}
Modified:
trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.core/src/org/jboss/tools/hibernate/jpt/core/internal/context/java/ForeignKeyImpl.java
===================================================================
---
trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.core/src/org/jboss/tools/hibernate/jpt/core/internal/context/java/ForeignKeyImpl.java 2011-07-20
12:27:40 UTC (rev 33072)
+++
trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.core/src/org/jboss/tools/hibernate/jpt/core/internal/context/java/ForeignKeyImpl.java 2011-07-20
12:28:40 UTC (rev 33073)
@@ -11,11 +11,21 @@
package org.jboss.tools.hibernate.jpt.core.internal.context.java;
+import java.util.Iterator;
+import java.util.List;
+
import org.eclipse.jdt.core.dom.CompilationUnit;
import org.eclipse.jpt.common.core.utility.TextRange;
+import org.eclipse.jpt.jpa.core.context.AttributeMapping;
+import org.eclipse.jpt.jpa.core.context.ManyToManyMapping;
import org.eclipse.jpt.jpa.core.context.java.JavaJpaContextNode;
import org.eclipse.jpt.jpa.core.internal.context.java.AbstractJavaJpaContextNode;
+import org.eclipse.jpt.jpa.db.Table;
+import org.eclipse.wst.validation.internal.provisional.core.IMessage;
+import org.eclipse.wst.validation.internal.provisional.core.IReporter;
import org.jboss.tools.hibernate.jpt.core.internal.context.ForeignKey;
+import
org.jboss.tools.hibernate.jpt.core.internal.context.HibernatePersistenceUnit.LocalMessage;
+import org.jboss.tools.hibernate.jpt.core.internal.context.Messages;
/**
* @author Dmitry Geraskov
@@ -94,4 +104,66 @@
return annotation;
}
+ @Override
+ public void validate(List<IMessage> messages, IReporter reporter,
+ CompilationUnit astRoot) {
+ super.validate(messages, reporter, astRoot);
+ this.validateName(messages, reporter, astRoot);
+ this.validateInverseName(messages, reporter, astRoot);
+ }
+
+ /**
+ * @param messages
+ * @param reporter
+ * @param astRoot
+ */
+ private void validateName(List<IMessage> messages, IReporter reporter,
+ CompilationUnit astRoot) {
+ validateForeignKeyName(messages, this.name,
getResourceForeignKey().getNameTextRange(astRoot));
+ }
+
+ /**
+ * @param messages
+ * @param reporter
+ * @param astRoot
+ */
+ private void validateInverseName(List<IMessage> messages,
+ IReporter reporter, CompilationUnit astRoot) {
+ if (getParent() instanceof ManyToManyMapping
+ && ((ManyToManyMapping)getParent()).isRelationshipOwner()){
+ validateForeignKeyName(messages, this.inverseName,
getResourceForeignKey().getInverseNameTextRange(astRoot));
+ } else {
+ //according to @ForeinKey javadoc inverseName ignored in other places
+ }
+ }
+
+ private void validateForeignKeyName(List<IMessage> messages, String name,
TextRange range) {
+ if (name == null || name.trim().length() == 0) {
+ messages.add(creatErrorMessage(Messages.NAME_CANT_BE_EMPTY, range));
+ } else {
+ AttributeMapping mapping = (AttributeMapping) getParent();
+ Table table = mapping.getTypeMapping().getPrimaryDbTable();
+ if (!mapping.validatesAgainstDatabase() || table == null ){
+ return;
+ }
+ Iterator<org.eclipse.jpt.jpa.db.ForeignKey> fks =
table.getForeignKeys().iterator();
+ while (fks.hasNext()) {
+ org.eclipse.jpt.jpa.db.ForeignKey fk = fks.next();
+ if (name.equals(fk.getIdentifier())){
+ return;
+ }
+ }
+ creatErrorMessage(Messages.UNRESOLVED_FOREIGN_KEY_NAME, range);
+ }
+ }
+
+ protected IMessage creatErrorMessage(String strmessage, TextRange range){
+ IMessage message = new LocalMessage(IMessage.HIGH_SEVERITY,
+ strmessage, new String[0], getResource());
+ message.setLineNo(range.getLineNumber());
+ message.setOffset(range.getOffset());
+ message.setLength(range.getLength());
+ return message;
+ }
+
}
Modified:
trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.core/src/org/jboss/tools/hibernate/jpt/core/internal/context/java/HibernateJavaBasicMappingImpl.java
===================================================================
---
trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.core/src/org/jboss/tools/hibernate/jpt/core/internal/context/java/HibernateJavaBasicMappingImpl.java 2011-07-20
12:27:40 UTC (rev 33072)
+++
trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.core/src/org/jboss/tools/hibernate/jpt/core/internal/context/java/HibernateJavaBasicMappingImpl.java 2011-07-20
12:28:40 UTC (rev 33073)
@@ -16,7 +16,11 @@
import org.eclipse.jdt.core.dom.CompilationUnit;
import org.eclipse.jpt.common.utility.Filter;
+import org.eclipse.jpt.common.utility.internal.iterables.ArrayIterable;
+import org.eclipse.jpt.common.utility.internal.iterables.CompositeIterable;
+import org.eclipse.jpt.jpa.core.context.java.JavaConverter;
import org.eclipse.jpt.jpa.core.context.java.JavaPersistentAttribute;
+import org.eclipse.jpt.jpa.core.context.java.JavaConverter.Adapter;
import org.eclipse.jpt.jpa.core.internal.context.java.AbstractJavaBasicMapping;
import org.eclipse.wst.validation.internal.provisional.core.IMessage;
import org.eclipse.wst.validation.internal.provisional.core.IReporter;
@@ -34,6 +38,10 @@
public class HibernateJavaBasicMappingImpl extends AbstractJavaBasicMapping
implements HibernateJavaBasicMapping {
+ protected static final Iterable<JavaConverter.Adapter>
HIBERNATE_CONVERTER_ADAPTERS =
+ new
CompositeIterable<JavaConverter.Adapter>(JavaTypeConverter.Adapter.instance(),
+ new ArrayIterable<JavaConverter.Adapter>(CONVERTER_ADAPTER_ARRAY));
+
protected final HibernateJavaTypeDefContainer typeDefContainer;
protected GenerationTime specifiedGenerationTime;
@@ -49,19 +57,17 @@
this.type = this.buildType();
}
- /*@Override
- public void addSupportingAnnotationNamesTo(Vector<String> names) {
- names.add(Hibernate.GENERATED);
- names.add(Hibernate.INDEX);
- names.add(Hibernate.TYPE);
- }*/
-
@Override
protected HibernateAbstractJpaFactory getJpaFactory() {
return (HibernateAbstractJpaFactory) super.getJpaFactory();
}
@Override
+ protected Iterable<Adapter> getConverterAdapters() {
+ return HIBERNATE_CONVERTER_ADAPTERS;
+ }
+
+ @Override
public void synchronizeWithResourceModel() {
super.synchronizeWithResourceModel();
this.typeDefContainer.initialize(this.getResourcePersistentAttribute());
Modified:
trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.core/src/org/jboss/tools/hibernate/jpt/core/internal/context/java/HibernateJavaEntity.java
===================================================================
---
trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.core/src/org/jboss/tools/hibernate/jpt/core/internal/context/java/HibernateJavaEntity.java 2011-07-20
12:27:40 UTC (rev 33072)
+++
trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.core/src/org/jboss/tools/hibernate/jpt/core/internal/context/java/HibernateJavaEntity.java 2011-07-20
12:28:40 UTC (rev 33073)
@@ -19,7 +19,7 @@
*
*/
public interface HibernateJavaEntity extends JavaEntity,
-HibernateEntity, ForeignKeyHolder{
+HibernateEntity{
HibernateJavaGeneratorContainer getGeneratorContainer();
Modified:
trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.core/src/org/jboss/tools/hibernate/jpt/core/internal/context/java/HibernateJavaEntityImpl.java
===================================================================
---
trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.core/src/org/jboss/tools/hibernate/jpt/core/internal/context/java/HibernateJavaEntityImpl.java 2011-07-20
12:27:40 UTC (rev 33072)
+++
trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.core/src/org/jboss/tools/hibernate/jpt/core/internal/context/java/HibernateJavaEntityImpl.java 2011-07-20
12:28:40 UTC (rev 33073)
@@ -39,7 +39,6 @@
import org.jboss.tools.hibernate.jpt.core.internal.HibernateAbstractJpaFactory;
import org.jboss.tools.hibernate.jpt.core.internal.HibernateJpaProject;
import org.jboss.tools.hibernate.jpt.core.internal.HibernateJptPlugin;
-import org.jboss.tools.hibernate.jpt.core.internal.context.ForeignKey;
import
org.jboss.tools.hibernate.jpt.core.internal.context.HibernatePersistenceUnit.LocalMessage;
import org.jboss.tools.hibernate.jpt.core.internal.context.HibernateTable;
import org.jboss.tools.hibernate.jpt.core.internal.context.Messages;
@@ -59,13 +58,10 @@
protected final JavaCacheable2_0 cacheable;
- protected ForeignKey foreignKey;
-
public HibernateJavaEntityImpl(JavaPersistentType parent, EntityAnnotation
mappingAnnotation) {
super(parent, mappingAnnotation);
this.discriminatorFormula = this.buildDiscriminatorFormula();
this.typeDefContainer = getJpaFactory().buildJavaTypeDefContainer(parent);
- this.foreignKey = this.buildForeignKey();
this.cacheable = this.buildJavaCachable();
}
@@ -81,7 +77,6 @@
this.cacheable.synchronizeWithResourceModel();
this.typeDefContainer.initialize(this.getResourcePersistentType());
this.syncDiscriminatorFormula();
- this.syncForeignKey();
}
@Override
@@ -92,9 +87,6 @@
if (discriminatorFormula != null){
this.discriminatorFormula.update();
}
- if (foreignKey != null){
- this.foreignKey.update();
- }
}
@Override
@@ -112,31 +104,8 @@
return this.typeDefContainer;
}
-/* protected static final String[] SUPPORTING_ANNOTATION_NAMES_ARRAY2 = new String[] {
- Hibernate.GENERIC_GENERATOR,
- Hibernate.GENERIC_GENERATORS,
- Hibernate.TYPE_DEF,
- Hibernate.TYPE_DEFS,
- Hibernate.NAMED_QUERY,
- Hibernate.NAMED_QUERIES,
- Hibernate.NAMED_NATIVE_QUERY,
- Hibernate.NAMED_NATIVE_QUERIES,
- Hibernate.DISCRIMINATOR_FORMULA,
- Hibernate.FOREIGN_KEY,
- };
- protected static final Iterable<String> SUPPORTING_ANNOTATION_NAMES2 = new
ArrayIterable<String>(SUPPORTING_ANNOTATION_NAMES_ARRAY2);
-
-
- @SuppressWarnings("unchecked")
@Override
- public Iterable<String> getSupportingAnnotationNames() {
- return new CompositeIterable<String>(
- SUPPORTING_ANNOTATION_NAMES2,
- super.getSupportingAnnotationNames());
- }*/
-
- @Override
public HibernateJavaTable getTable() {
return (HibernateJavaTable) super.getTable();
}
@@ -207,79 +176,7 @@
firePropertyChanged(DISCRIMINATOR_FORMULA_PROPERTY, oldDiscriminatorFormula,
newDiscriminatorFormula);
}
- // ********************* foreignKey **************
-
- protected void syncForeignKey() {
- ForeignKeyAnnotation annotation = getForeignKeyAnnotation();
- if (annotation == null) {
- if (getForeignKey() != null) {
- setForeignKey(null);
- }
- }
- else {
- if (getForeignKey() == null) {
- setForeignKey(buildForeignKey(annotation));
- }
- else {
- if ((this.foreignKey != null) && (this.foreignKey.getForeignKeyAnnotation()
== annotation)) {
- this.foreignKey.synchronizeWithResourceModel();
- } else {
- this.setForeignKey(this.buildForeignKey(annotation));
- }
- }
- }
- }
-
@Override
- public ForeignKey addForeignKey() {
- if (getForeignKey() != null) {
- throw new IllegalStateException("foreignKey already exists"); //$NON-NLS-1$
- }
- ForeignKeyAnnotation annotation = (ForeignKeyAnnotation)
this.getResourcePersistentType().addAnnotation(ForeignKeyAnnotation.ANNOTATION_NAME);
- ForeignKey foreignKey = buildForeignKey(annotation);
- setForeignKey(foreignKey);
- return this.foreignKey;
- }
-
- @Override
- public ForeignKey getForeignKey() {
- return this.foreignKey;
- }
-
- protected void setForeignKey(ForeignKey newForeignKey) {
- ForeignKey oldForeignKey = this.foreignKey;
- this.foreignKey = newForeignKey;
- firePropertyChanged(FOREIGN_KEY_PROPERTY, oldForeignKey, newForeignKey);
- }
-
- @Override
- public void removeForeignKey() {
- if (getForeignKey() == null) {
- throw new IllegalStateException("foreignKey does not exist, cannot be
removed"); //$NON-NLS-1$
- }
- this.getResourcePersistentType().removeAnnotation(ForeignKeyAnnotation.ANNOTATION_NAME);
- setForeignKey(null);
- }
-
- protected ForeignKey buildForeignKey() {
- ForeignKeyAnnotation annotation = this.getForeignKeyAnnotation();
- return (annotation == null) ? null : this.buildForeignKey(annotation);
- }
-
- protected ForeignKey buildForeignKey(ForeignKeyAnnotation annotation) {
- return getJpaFactory().buildForeignKey(this, annotation);
- }
-
- protected ForeignKeyAnnotation getForeignKeyAnnotation() {
- return (ForeignKeyAnnotation)
this.getResourcePersistentType().getAnnotation(ForeignKeyAnnotation.ANNOTATION_NAME);
- }
-
- @Override
- public org.eclipse.jpt.jpa.db.Table getForeignKeyDbTable() {
- return getPrimaryDbTable();
- }
-
- @Override
public HibernateJavaGeneratorContainer getGeneratorContainer() {
return (HibernateJavaGeneratorContainer)super.getGeneratorContainer();
}
@@ -289,31 +186,8 @@
public void validate(List<IMessage> messages, IReporter reporter, CompilationUnit
astRoot) {
super.validate(messages, reporter, astRoot);
getTypeDefContainer().validate(messages, reporter, astRoot);
- this.validateForeignKey(messages, astRoot);
}
- protected void validateForeignKey(List<IMessage> messages, CompilationUnit
astRoot) {
- org.eclipse.jpt.jpa.db.Table table = getForeignKeyDbTable();
- if (!validatesAgainstDatabase() || this.foreignKey == null || table == null ){
- return;
- }
- Iterator<org.eclipse.jpt.jpa.db.ForeignKey> fks =
table.getForeignKeys().iterator();
- while (fks.hasNext()) {
- org.eclipse.jpt.jpa.db.ForeignKey fk = fks.next();
- if (this.foreignKey.getName().equals(fk.getIdentifier())){
- return;
- }
- }
- TextRange textRange = this.getForeignKeyAnnotation().getNameTextRange(astRoot);
- IMessage message = new LocalMessage(IMessage.HIGH_SEVERITY,
- Messages.UNRESOLVED_FOREIGN_KEY_NAME, new String[] {this.foreignKey.getName(),
getPrimaryTableName()},
- this.foreignKey);
- message.setLineNo(textRange.getLineNumber());
- message.setOffset(textRange.getOffset());
- message.setLength(textRange.getLength());
- messages.add(message);
- }
-
@Override
protected PrimaryKeyJoinColumnOwner buildPrimaryKeyJoinColumnOwner() {
return new HibernatePrimaryKeyJoinColumnOwner();
Modified:
trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.core/src/org/jboss/tools/hibernate/jpt/core/internal/context/java/HibernateJavaManyToManyMapping.java
===================================================================
---
trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.core/src/org/jboss/tools/hibernate/jpt/core/internal/context/java/HibernateJavaManyToManyMapping.java 2011-07-20
12:27:40 UTC (rev 33072)
+++
trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.core/src/org/jboss/tools/hibernate/jpt/core/internal/context/java/HibernateJavaManyToManyMapping.java 2011-07-20
12:28:40 UTC (rev 33073)
@@ -11,11 +11,9 @@
package org.jboss.tools.hibernate.jpt.core.internal.context.java;
-import java.util.Iterator;
import java.util.List;
import org.eclipse.jdt.core.dom.CompilationUnit;
-import org.eclipse.jpt.common.core.utility.TextRange;
import org.eclipse.jpt.jpa.core.context.java.JavaMappingRelationship;
import org.eclipse.jpt.jpa.core.context.java.JavaPersistentAttribute;
import org.eclipse.jpt.jpa.core.internal.context.java.AbstractJavaManyToManyMapping;
@@ -25,8 +23,6 @@
import org.jboss.tools.hibernate.jpt.core.internal.HibernateAbstractJpaFactory;
import org.jboss.tools.hibernate.jpt.core.internal.context.ForeignKey;
import org.jboss.tools.hibernate.jpt.core.internal.context.ForeignKeyHolder;
-import
org.jboss.tools.hibernate.jpt.core.internal.context.HibernatePersistenceUnit.LocalMessage;
-import org.jboss.tools.hibernate.jpt.core.internal.context.Messages;
/**
* @author Dmitry Geraskov
@@ -47,12 +43,6 @@
return new HibernateJavaManyToManyRelationship(this);
}
- /*@Override
- protected void addSupportingAnnotationNamesTo(Vector<String> names) {
- super.addSupportingAnnotationNamesTo(names);
- names.add(Hibernate.FOREIGN_KEY);
- }*/
-
@Override
protected HibernateAbstractJpaFactory getJpaFactory() {
return (HibernateAbstractJpaFactory) super.getJpaFactory();
@@ -147,29 +137,13 @@
public void validate(List<IMessage> messages, IReporter reporter,
CompilationUnit astRoot) {
super.validate(messages, reporter, astRoot);
- this.validateForeignKey(messages, astRoot);
+ this.validateForeignKey(messages, reporter, astRoot);
}
- protected void validateForeignKey(List<IMessage> messages, CompilationUnit
astRoot) {
- Table table = getTypeMapping().getPrimaryDbTable();
- if (!validatesAgainstDatabase() || this.foreignKey == null || table == null ){
- return;
+ protected void validateForeignKey(List<IMessage> messages, IReporter reporter,
CompilationUnit astRoot) {
+ if (foreignKey != null){
+ foreignKey.validate(messages, reporter, astRoot);
}
- Iterator<org.eclipse.jpt.jpa.db.ForeignKey> fks =
table.getForeignKeys().iterator();
- while (fks.hasNext()) {
- org.eclipse.jpt.jpa.db.ForeignKey fk = fks.next();
- if (this.foreignKey.getName().equals(fk.getIdentifier())){
- return;
- }
- }
- TextRange textRange = this.getForeignKeyAnnotation().getNameTextRange(astRoot);
- IMessage message = new LocalMessage(IMessage.HIGH_SEVERITY,
- Messages.UNRESOLVED_FOREIGN_KEY_NAME, new String[] {this.foreignKey.getName(),
getTypeMapping().getPrimaryTableName()},
- this.foreignKey);
- message.setLineNo(textRange.getLineNumber());
- message.setOffset(textRange.getOffset());
- message.setLength(textRange.getLength());
- messages.add(message);
}
}
Deleted:
trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.core/src/org/jboss/tools/hibernate/jpt/core/internal/context/java/HibernateJavaManyToOneMapping.java
===================================================================
---
trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.core/src/org/jboss/tools/hibernate/jpt/core/internal/context/java/HibernateJavaManyToOneMapping.java 2011-07-20
12:27:40 UTC (rev 33072)
+++
trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.core/src/org/jboss/tools/hibernate/jpt/core/internal/context/java/HibernateJavaManyToOneMapping.java 2011-07-20
12:28:40 UTC (rev 33073)
@@ -1,33 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2009 Red Hat, Inc.
- * Distributed under license by Red Hat, Inc. All rights reserved.
- * This program is 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
- *
- * Contributor:
- * Red Hat, Inc. - initial API and implementation
- ******************************************************************************/
-
-package org.jboss.tools.hibernate.jpt.core.internal.context.java;
-
-import org.eclipse.jpt.jpa.core.context.java.JavaPersistentAttribute;
-import org.eclipse.jpt.jpa.core.internal.context.java.GenericJavaManyToOneRelationship;
-import org.eclipse.jpt.jpa.core.jpa2.context.java.JavaManyToOneRelationship2_0;
-
-/**
- * @author Dmitry Geraskov
- *
- */
-public class HibernateJavaManyToOneMapping extends AbstractHibernateJavaManyToOneMapping
{
-
- public HibernateJavaManyToOneMapping(JavaPersistentAttribute parent) {
- super(parent);
- }
-
- @Override
- protected JavaManyToOneRelationship2_0 buildRelationship() {
- return new GenericJavaManyToOneRelationship(this);
- }
-
-}
Copied:
trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.core/src/org/jboss/tools/hibernate/jpt/core/internal/context/java/HibernateJavaManyToOneMapping.java
(from rev 33010,
trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.core/src/org/jboss/tools/hibernate/jpt/core/internal/context/java/AbstractHibernateJavaManyToOneMapping.java)
===================================================================
---
trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.core/src/org/jboss/tools/hibernate/jpt/core/internal/context/java/HibernateJavaManyToOneMapping.java
(rev 0)
+++
trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.core/src/org/jboss/tools/hibernate/jpt/core/internal/context/java/HibernateJavaManyToOneMapping.java 2011-07-20
12:28:40 UTC (rev 33073)
@@ -0,0 +1,146 @@
+/*******************************************************************************
+ * Copyright (c) 2011 Red Hat, Inc.
+ * Distributed under license by Red Hat, Inc. All rights reserved.
+ * This program is 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
+ *
+ * Contributor:
+ * Red Hat, Inc. - initial API and implementation
+ ******************************************************************************/
+package org.jboss.tools.hibernate.jpt.core.internal.context.java;
+
+import java.util.Iterator;
+import java.util.List;
+
+import org.eclipse.jdt.core.dom.CompilationUnit;
+import org.eclipse.jpt.common.core.utility.TextRange;
+import org.eclipse.jpt.jpa.core.context.java.JavaPersistentAttribute;
+import org.eclipse.jpt.jpa.core.internal.context.java.AbstractJavaManyToOneMapping;
+import org.eclipse.jpt.jpa.db.Table;
+import org.eclipse.wst.validation.internal.provisional.core.IMessage;
+import org.eclipse.wst.validation.internal.provisional.core.IReporter;
+import org.jboss.tools.hibernate.jpt.core.internal.HibernateAbstractJpaFactory;
+import org.jboss.tools.hibernate.jpt.core.internal.context.ForeignKey;
+import org.jboss.tools.hibernate.jpt.core.internal.context.ForeignKeyHolder;
+import
org.jboss.tools.hibernate.jpt.core.internal.context.HibernatePersistenceUnit.LocalMessage;
+import org.jboss.tools.hibernate.jpt.core.internal.context.Messages;
+
+/**
+ *
+ * @author Dmitry Geraskov (geraskov(a)gmail.com)
+ *
+ */
+public class HibernateJavaManyToOneMapping extends
+AbstractJavaManyToOneMapping implements ForeignKeyHolder {
+
+ protected ForeignKey foreignKey;
+
+ public HibernateJavaManyToOneMapping(JavaPersistentAttribute parent) {
+ super(parent);
+ }
+
+ @Override
+ protected HibernateAbstractJpaFactory getJpaFactory() {
+ return (HibernateAbstractJpaFactory) super.getJpaFactory();
+ }
+
+ @Override
+ public void synchronizeWithResourceModel() {
+ super.synchronizeWithResourceModel();
+ this.syncForeignKey();
+ }
+
+ @Override
+ public void update() {
+ super.update();
+ if (foreignKey != null){
+ this.foreignKey.update();
+ }
+ }
+
+ // ********************* foreignKey **************
+
+ protected void syncForeignKey() {
+ ForeignKeyAnnotation annotation = getForeignKeyAnnotation();
+ if (annotation == null) {
+ if (getForeignKey() != null) {
+ setForeignKey(null);
+ }
+ }
+ else {
+ if (getForeignKey() == null) {
+ setForeignKey(buildForeignKey(annotation));
+ }
+ else {
+ if ((this.foreignKey != null) && (this.foreignKey.getForeignKeyAnnotation()
== annotation)) {
+ this.foreignKey.synchronizeWithResourceModel();
+ } else {
+ this.setForeignKey(this.buildForeignKey(annotation));
+ }
+ }
+ }
+ }
+
+ @Override
+ public ForeignKey addForeignKey() {
+ if (getForeignKey() != null) {
+ throw new IllegalStateException("foreignKey already exists"); //$NON-NLS-1$
+ }
+ ForeignKeyAnnotation annotation = (ForeignKeyAnnotation)
this.getResourcePersistentAttribute().addAnnotation(ForeignKeyAnnotation.ANNOTATION_NAME);
+ ForeignKey foreignKey = buildForeignKey(annotation);
+ setForeignKey(foreignKey);
+ return this.foreignKey;
+ }
+
+ @Override
+ public ForeignKey getForeignKey() {
+ return this.foreignKey;
+ }
+
+ protected void setForeignKey(ForeignKey newForeignKey) {
+ ForeignKey oldForeignKey = this.foreignKey;
+ this.foreignKey = newForeignKey;
+ firePropertyChanged(FOREIGN_KEY_PROPERTY, oldForeignKey, newForeignKey);
+ }
+
+ @Override
+ public void removeForeignKey() {
+ if (getForeignKey() == null) {
+ throw new IllegalStateException("foreignKey does not exist, cannot be
removed"); //$NON-NLS-1$
+ }
+ this.getResourcePersistentAttribute().removeAnnotation(ForeignKeyAnnotation.ANNOTATION_NAME);
+ setForeignKey(null);
+ }
+
+ protected ForeignKey buildForeignKey() {
+ ForeignKeyAnnotation annotation = this.getForeignKeyAnnotation();
+ return (annotation == null) ? null : this.buildForeignKey(annotation);
+ }
+
+ protected ForeignKey buildForeignKey(ForeignKeyAnnotation annotation) {
+ return getJpaFactory().buildForeignKey(this, annotation);
+ }
+
+ protected ForeignKeyAnnotation getForeignKeyAnnotation() {
+ return (ForeignKeyAnnotation)
this.getResourcePersistentAttribute().getAnnotation(ForeignKeyAnnotation.ANNOTATION_NAME);
+ }
+
+ public Table getForeignKeyDbTable() {
+ return getTypeMapping().getPrimaryDbTable();
+ }
+
+ @Override
+ public void validate(List<IMessage> messages, IReporter reporter,
+ CompilationUnit astRoot) {
+ super.validate(messages, reporter, astRoot);
+ this.validateForeignKey(messages, reporter, astRoot);
+ }
+
+ protected void validateForeignKey(List<IMessage> messages, IReporter reporter,
CompilationUnit astRoot) {
+ if (foreignKey != null){
+ foreignKey.validate(messages, reporter, astRoot);
+ }
+ }
+
+}
Modified:
trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.core/src/org/jboss/tools/hibernate/jpt/core/internal/context/java/HibernateJavaOneToManyMapping.java
===================================================================
---
trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.core/src/org/jboss/tools/hibernate/jpt/core/internal/context/java/HibernateJavaOneToManyMapping.java 2011-07-20
12:27:40 UTC (rev 33072)
+++
trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.core/src/org/jboss/tools/hibernate/jpt/core/internal/context/java/HibernateJavaOneToManyMapping.java 2011-07-20
12:28:40 UTC (rev 33073)
@@ -10,16 +10,32 @@
******************************************************************************/
package org.jboss.tools.hibernate.jpt.core.internal.context.java;
+import java.util.Iterator;
+import java.util.List;
+
+import org.eclipse.jdt.core.dom.CompilationUnit;
+import org.eclipse.jpt.common.core.utility.TextRange;
import org.eclipse.jpt.jpa.core.context.java.JavaMappingRelationship;
import org.eclipse.jpt.jpa.core.context.java.JavaPersistentAttribute;
-import org.eclipse.jpt.jpa.core.internal.jpa1.context.java.GenericJavaOneToManyMapping;
+import org.eclipse.jpt.jpa.core.internal.context.java.AbstractJavaOneToManyMapping;
+import org.eclipse.jpt.jpa.db.Table;
+import org.eclipse.wst.validation.internal.provisional.core.IMessage;
+import org.eclipse.wst.validation.internal.provisional.core.IReporter;
+import org.jboss.tools.hibernate.jpt.core.internal.HibernateAbstractJpaFactory;
+import org.jboss.tools.hibernate.jpt.core.internal.context.ForeignKey;
+import org.jboss.tools.hibernate.jpt.core.internal.context.ForeignKeyHolder;
+import org.jboss.tools.hibernate.jpt.core.internal.context.Messages;
+import
org.jboss.tools.hibernate.jpt.core.internal.context.HibernatePersistenceUnit.LocalMessage;
/**
* @author Dmitry Geraskov
*
*/
-public class HibernateJavaOneToManyMapping extends GenericJavaOneToManyMapping {
+public class HibernateJavaOneToManyMapping extends AbstractJavaOneToManyMapping
+ implements ForeignKeyHolder{
+ protected ForeignKey foreignKey;
+
/**
* @param parent
*/
@@ -31,5 +47,108 @@
protected JavaMappingRelationship buildRelationship() {
return new HibernateJavaOneToManyRelationship(this, this.isJpa2_0Compatible());
}
+
+ @Override
+ protected HibernateAbstractJpaFactory getJpaFactory() {
+ return (HibernateAbstractJpaFactory) super.getJpaFactory();
+ }
+ @Override
+ public void synchronizeWithResourceModel() {
+ super.synchronizeWithResourceModel();
+ this.syncForeignKey();
+ }
+
+ @Override
+ public void update() {
+ super.update();
+ if (foreignKey != null){
+ this.foreignKey.update();
+ }
+ }
+
+ // ********************* foreignKey **************
+
+ protected void syncForeignKey() {
+ ForeignKeyAnnotation annotation = getForeignKeyAnnotation();
+ if (annotation == null) {
+ if (getForeignKey() != null) {
+ setForeignKey(null);
+ }
+ }
+ else {
+ if (getForeignKey() == null) {
+ setForeignKey(buildForeignKey(annotation));
+ }
+ else {
+ if ((this.foreignKey != null) && (this.foreignKey.getForeignKeyAnnotation()
== annotation)) {
+ this.foreignKey.synchronizeWithResourceModel();
+ } else {
+ this.setForeignKey(this.buildForeignKey(annotation));
+ }
+ }
+ }
+ }
+
+ @Override
+ public ForeignKey addForeignKey() {
+ if (getForeignKey() != null) {
+ throw new IllegalStateException("foreignKey already exists"); //$NON-NLS-1$
+ }
+ ForeignKeyAnnotation annotation = (ForeignKeyAnnotation)
this.getResourcePersistentAttribute().addAnnotation(ForeignKeyAnnotation.ANNOTATION_NAME);
+ ForeignKey foreignKey = buildForeignKey(annotation);
+ setForeignKey(foreignKey);
+ return this.foreignKey;
+ }
+
+ @Override
+ public ForeignKey getForeignKey() {
+ return this.foreignKey;
+ }
+
+ protected void setForeignKey(ForeignKey newForeignKey) {
+ ForeignKey oldForeignKey = this.foreignKey;
+ this.foreignKey = newForeignKey;
+ firePropertyChanged(FOREIGN_KEY_PROPERTY, oldForeignKey, newForeignKey);
+ }
+
+ @Override
+ public void removeForeignKey() {
+ if (getForeignKey() == null) {
+ throw new IllegalStateException("foreignKey does not exist, cannot be
removed"); //$NON-NLS-1$
+ }
+ this.getResourcePersistentAttribute().removeAnnotation(ForeignKeyAnnotation.ANNOTATION_NAME);
+ setForeignKey(null);
+ }
+
+ protected ForeignKey buildForeignKey() {
+ ForeignKeyAnnotation annotation = this.getForeignKeyAnnotation();
+ return (annotation == null) ? null : this.buildForeignKey(annotation);
+ }
+
+ protected ForeignKey buildForeignKey(ForeignKeyAnnotation annotation) {
+ return getJpaFactory().buildForeignKey(this, annotation);
+ }
+
+ protected ForeignKeyAnnotation getForeignKeyAnnotation() {
+ return (ForeignKeyAnnotation)
this.getResourcePersistentAttribute().getAnnotation(ForeignKeyAnnotation.ANNOTATION_NAME);
+ }
+
+ public Table getForeignKeyDbTable() {
+ return getTypeMapping().getPrimaryDbTable();
+ }
+
+ @Override
+ public void validate(List<IMessage> messages, IReporter reporter,
+ CompilationUnit astRoot) {
+ super.validate(messages, reporter, astRoot);
+ this.validateForeignKey(messages, reporter, astRoot);
+ }
+
+ protected void validateForeignKey(List<IMessage> messages, IReporter reporter,
CompilationUnit astRoot) {
+ if (foreignKey != null){
+ foreignKey.validate(messages, reporter, astRoot);
+ }
+ }
+
}
Deleted:
trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.core/src/org/jboss/tools/hibernate/jpt/core/internal/context/java/HibernateJavaOneToOneMapping.java
===================================================================
---
trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.core/src/org/jboss/tools/hibernate/jpt/core/internal/context/java/HibernateJavaOneToOneMapping.java 2011-07-20
12:27:40 UTC (rev 33072)
+++
trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.core/src/org/jboss/tools/hibernate/jpt/core/internal/context/java/HibernateJavaOneToOneMapping.java 2011-07-20
12:28:40 UTC (rev 33073)
@@ -1,35 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2009 Red Hat, Inc.
- * Distributed under license by Red Hat, Inc. All rights reserved.
- * This program is 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
- *
- * Contributor:
- * Red Hat, Inc. - initial API and implementation
- ******************************************************************************/
-
-package org.jboss.tools.hibernate.jpt.core.internal.context.java;
-
-import org.eclipse.jpt.jpa.core.context.java.JavaPersistentAttribute;
-import org.eclipse.jpt.jpa.core.internal.context.java.GenericJavaOneToOneRelationship;
-import org.eclipse.jpt.jpa.core.jpa2.context.java.JavaOneToOneRelationship2_0;
-
-/**
- * @author Dmitry Geraskov
- *
- */
-public class HibernateJavaOneToOneMapping extends AbstractHibernateJavaOneToOneMapping {
-
- public HibernateJavaOneToOneMapping(JavaPersistentAttribute parent) {
- super(parent);
- }
-
- @Override
- protected JavaOneToOneRelationship2_0 buildRelationship() {
- return new GenericJavaOneToOneRelationship(this);
- }
-
-
-}
-
Copied:
trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.core/src/org/jboss/tools/hibernate/jpt/core/internal/context/java/HibernateJavaOneToOneMapping.java
(from rev 33010,
trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.core/src/org/jboss/tools/hibernate/jpt/core/internal/context/java/AbstractHibernateJavaOneToOneMapping.java)
===================================================================
---
trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.core/src/org/jboss/tools/hibernate/jpt/core/internal/context/java/HibernateJavaOneToOneMapping.java
(rev 0)
+++
trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.core/src/org/jboss/tools/hibernate/jpt/core/internal/context/java/HibernateJavaOneToOneMapping.java 2011-07-20
12:28:40 UTC (rev 33073)
@@ -0,0 +1,144 @@
+/*******************************************************************************
+ * Copyright (c) 2011 Red Hat, Inc.
+ * Distributed under license by Red Hat, Inc. All rights reserved.
+ * This program is 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
+ *
+ * Contributor:
+ * Red Hat, Inc. - initial API and implementation
+ ******************************************************************************/
+package org.jboss.tools.hibernate.jpt.core.internal.context.java;
+
+import java.util.Iterator;
+import java.util.List;
+
+import org.eclipse.jdt.core.dom.CompilationUnit;
+import org.eclipse.jpt.common.core.utility.TextRange;
+import org.eclipse.jpt.jpa.core.context.java.JavaPersistentAttribute;
+import org.eclipse.jpt.jpa.core.internal.context.java.AbstractJavaOneToOneMapping;
+import org.eclipse.jpt.jpa.db.Table;
+import org.eclipse.wst.validation.internal.provisional.core.IMessage;
+import org.eclipse.wst.validation.internal.provisional.core.IReporter;
+import org.jboss.tools.hibernate.jpt.core.internal.HibernateAbstractJpaFactory;
+import org.jboss.tools.hibernate.jpt.core.internal.context.ForeignKey;
+import org.jboss.tools.hibernate.jpt.core.internal.context.ForeignKeyHolder;
+import
org.jboss.tools.hibernate.jpt.core.internal.context.HibernatePersistenceUnit.LocalMessage;
+import org.jboss.tools.hibernate.jpt.core.internal.context.Messages;
+/**
+ *
+ * @author Dmitry Geraskov (geraskov(a)gmail.com)
+ *
+ */
+public class HibernateJavaOneToOneMapping extends
+ AbstractJavaOneToOneMapping implements ForeignKeyHolder {
+
+ protected ForeignKey foreignKey;
+
+ public HibernateJavaOneToOneMapping(JavaPersistentAttribute parent) {
+ super(parent);
+ }
+
+ @Override
+ protected HibernateAbstractJpaFactory getJpaFactory() {
+ return (HibernateAbstractJpaFactory) super.getJpaFactory();
+ }
+
+ @Override
+ public void synchronizeWithResourceModel() {
+ super.synchronizeWithResourceModel();
+ this.syncForeignKey();
+ }
+
+ @Override
+ public void update() {
+ super.update();
+ if (foreignKey != null){
+ this.foreignKey.update();
+ }
+ }
+
+ // ********************* foreignKey **************
+
+ protected void syncForeignKey() {
+ ForeignKeyAnnotation annotation = getForeignKeyAnnotation();
+ if (annotation == null) {
+ if (getForeignKey() != null) {
+ setForeignKey(null);
+ }
+ }
+ else {
+ if (getForeignKey() == null) {
+ setForeignKey(buildForeignKey(annotation));
+ }
+ else {
+ if ((this.foreignKey != null) && (this.foreignKey.getForeignKeyAnnotation()
== annotation)) {
+ this.foreignKey.synchronizeWithResourceModel();
+ } else {
+ this.setForeignKey(this.buildForeignKey(annotation));
+ }
+ }
+ }
+ }
+
+ @Override
+ public ForeignKey addForeignKey() {
+ if (getForeignKey() != null) {
+ throw new IllegalStateException("foreignKey already exists"); //$NON-NLS-1$
+ }
+ ForeignKeyAnnotation annotation = (ForeignKeyAnnotation)
this.getResourcePersistentAttribute().addAnnotation(ForeignKeyAnnotation.ANNOTATION_NAME);
+ ForeignKey foreignKey = buildForeignKey(annotation);
+ setForeignKey(foreignKey);
+ return this.foreignKey;
+ }
+
+ @Override
+ public ForeignKey getForeignKey() {
+ return this.foreignKey;
+ }
+
+ protected void setForeignKey(ForeignKey newForeignKey) {
+ ForeignKey oldForeignKey = this.foreignKey;
+ this.foreignKey = newForeignKey;
+ firePropertyChanged(FOREIGN_KEY_PROPERTY, oldForeignKey, newForeignKey);
+ }
+
+ @Override
+ public void removeForeignKey() {
+ if (getForeignKey() == null) {
+ throw new IllegalStateException("foreignKey does not exist, cannot be
removed"); //$NON-NLS-1$
+ }
+ this.getResourcePersistentAttribute().removeAnnotation(ForeignKeyAnnotation.ANNOTATION_NAME);
+ setForeignKey(null);
+ }
+
+ protected ForeignKey buildForeignKey() {
+ ForeignKeyAnnotation annotation = this.getForeignKeyAnnotation();
+ return (annotation == null) ? null : this.buildForeignKey(annotation);
+ }
+
+ protected ForeignKey buildForeignKey(ForeignKeyAnnotation annotation) {
+ return getJpaFactory().buildForeignKey(this, annotation);
+ }
+
+ protected ForeignKeyAnnotation getForeignKeyAnnotation() {
+ return (ForeignKeyAnnotation)
this.getResourcePersistentAttribute().getAnnotation(ForeignKeyAnnotation.ANNOTATION_NAME);
+ }
+
+ public Table getForeignKeyDbTable() {
+ return getTypeMapping().getPrimaryDbTable();
+ }
+
+ @Override
+ public void validate(List<IMessage> messages, IReporter reporter,
+ CompilationUnit astRoot) {
+ super.validate(messages, reporter, astRoot);
+ this.validateForeignKey(messages, reporter, astRoot);
+ }
+
+ protected void validateForeignKey(List<IMessage> messages, IReporter reporter,
CompilationUnit astRoot) {
+ if (foreignKey != null){
+ foreignKey.validate(messages, reporter, astRoot);
+ }
+ }
+}