/******************************************************************************* * Copyright (c) 2008-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; import org.eclipse.core.runtime.IProgressMonitor; import org.eclipse.jpt.common.core.resource.java.JavaResourceAnnotatedElement; import org.eclipse.jpt.common.core.resource.java.JavaResourcePackage; import org.eclipse.jpt.jpa.core.JpaProject; import org.eclipse.jpt.jpa.core.context.JoinColumn; import org.eclipse.jpt.jpa.core.context.JpaContextModel; 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.JavaConverter; import org.eclipse.jpt.jpa.core.context.java.JavaEntity; import org.eclipse.jpt.jpa.core.context.java.JavaGeneratorContainer; import org.eclipse.jpt.jpa.core.context.java.JavaIdMapping; 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.JavaPersistentType; import org.eclipse.jpt.jpa.core.context.java.JavaQueryContainer; import org.eclipse.jpt.jpa.core.context.java.JavaSpecifiedColumn; import org.eclipse.jpt.jpa.core.context.java.JavaSpecifiedDiscriminatorColumn; import org.eclipse.jpt.jpa.core.context.java.JavaSpecifiedJoinColumn; import org.eclipse.jpt.jpa.core.context.java.JavaSpecifiedJoinTable; import org.eclipse.jpt.jpa.core.context.java.JavaSpecifiedPersistentAttribute; import org.eclipse.jpt.jpa.core.context.java.JavaSpecifiedSecondaryTable; import org.eclipse.jpt.jpa.core.context.java.JavaSpecifiedTable; import org.eclipse.jpt.jpa.core.context.java.JavaTable; import org.eclipse.jpt.jpa.core.internal.AbstractJpaFactory; import org.eclipse.jpt.jpa.core.resource.java.CompleteJoinColumnAnnotation; import org.eclipse.jpt.jpa.core.resource.java.EntityAnnotation; import org.eclipse.jpt.jpa.core.resource.java.SecondaryTableAnnotation; import org.jboss.tools.hibernate.jpt.core.internal.context.ForeignKey; import org.jboss.tools.hibernate.jpt.core.internal.context.java.ForeignKeyAnnotation; import org.jboss.tools.hibernate.jpt.core.internal.context.java.ForeignKeyImpl; import org.jboss.tools.hibernate.jpt.core.internal.context.java.HibernateGenericGeneratorContainer; import org.jboss.tools.hibernate.jpt.core.internal.context.java.HibernateJavaBasicMappingImpl; import org.jboss.tools.hibernate.jpt.core.internal.context.java.HibernateJavaColumnImpl; import org.jboss.tools.hibernate.jpt.core.internal.context.java.HibernateJavaDiscriminatorColumnImpl; import org.jboss.tools.hibernate.jpt.core.internal.context.java.HibernateJavaEntity; import org.jboss.tools.hibernate.jpt.core.internal.context.java.HibernateJavaEntityImpl; import org.jboss.tools.hibernate.jpt.core.internal.context.java.HibernateJavaGeneratorContainerImpl; import org.jboss.tools.hibernate.jpt.core.internal.context.java.HibernateJavaIdMappingImpl; 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; import org.jboss.tools.hibernate.jpt.core.internal.context.java.HibernateJavaTableImpl; import org.jboss.tools.hibernate.jpt.core.internal.context.java.HibernateJavaTypeDefContainer; import org.jboss.tools.hibernate.jpt.core.internal.context.java.HibernateJavaTypeDefContainerImpl; import org.jboss.tools.hibernate.jpt.core.internal.context.java.HibernateNamedNativeQueryImpl; import org.jboss.tools.hibernate.jpt.core.internal.context.java.HibernateNamedQueryImpl; import org.jboss.tools.hibernate.jpt.core.internal.context.java.HibernatePackageInfo; import org.jboss.tools.hibernate.jpt.core.internal.context.java.HibernatePackageInfoImpl; import org.jboss.tools.hibernate.jpt.core.internal.context.java.IndexImpl; import org.jboss.tools.hibernate.jpt.core.internal.context.java.JavaDbGenericGenerator; import org.jboss.tools.hibernate.jpt.core.internal.context.java.JavaDbGenericGeneratorImpl; import org.jboss.tools.hibernate.jpt.core.internal.context.java.JavaDiscriminatorFormula; import org.jboss.tools.hibernate.jpt.core.internal.context.java.JavaDiscriminatorFormulaImpl; 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; import org.jboss.tools.hibernate.jpt.core.internal.context.persistence.HibernateClassRef; import org.jboss.tools.hibernate.jpt.core.internal.resource.java.DiscriminatorFormulaAnnotation; import org.jboss.tools.hibernate.jpt.core.internal.resource.java.GenericGeneratorAnnotation; import org.jboss.tools.hibernate.jpt.core.internal.resource.java.HibernateNamedNativeQueryAnnotation; import org.jboss.tools.hibernate.jpt.core.internal.resource.java.HibernateNamedQueryAnnotation; import org.jboss.tools.hibernate.jpt.core.internal.resource.java.IndexAnnotation; import org.jboss.tools.hibernate.jpt.core.internal.resource.java.ParameterAnnotation; import org.jboss.tools.hibernate.jpt.core.internal.resource.java.TypeAnnotation; import org.jboss.tools.hibernate.jpt.core.internal.resource.java.TypeDefAnnotation; import org.jboss.tools.hibernate.runtime.spi.IService; /** * @author Dmitry Geraskov * */ public abstract class HibernateAbstractJpaFactory extends AbstractJpaFactory { public abstract IService getHibernateService(); // ********** Core Model ********** @Override public JpaProject buildJpaProject(JpaProject.Config config, IProgressMonitor monitor){ return new HibernateJpaProject(config, monitor); } // ********** Java Context Model ********** @Override public JavaEntity buildJavaEntity(JavaPersistentType parent, EntityAnnotation entityAnnotation) { return new HibernateJavaEntityImpl(parent, entityAnnotation); } @Override public JavaIdMapping buildJavaIdMapping(JavaSpecifiedPersistentAttribute parent) { return new HibernateJavaIdMappingImpl(parent); } public JavaDbGenericGenerator buildJavaGenericGenerator(HibernateGenericGeneratorContainer parent, GenericGeneratorAnnotation annotation) { return new JavaDbGenericGeneratorImpl(parent, annotation); } public JavaTypeDef buildJavaTypeDef(JpaContextModel parent, TypeDefAnnotation typeDefResource) { return new JavaTypeDefImpl(parent, typeDefResource); } @Override public JavaSpecifiedDiscriminatorColumn buildJavaDiscriminatorColumn( JavaSpecifiedDiscriminatorColumn.ParentAdapter parent) { return new HibernateJavaDiscriminatorColumnImpl(parent); } public HibernateJavaNamedQuery buildHibernateJavaNamedQuery(JavaQueryContainer parent, HibernateNamedQueryAnnotation hibernateNamedQueryAnnotation) { return new HibernateNamedQueryImpl(parent, hibernateNamedQueryAnnotation); } public HibernateJavaNamedNativeQuery buildHibernateJavaNamedNativeQuery(JavaQueryContainer parent, HibernateNamedNativeQueryAnnotation namedNativeQueryAnnotation) { return new HibernateNamedNativeQueryImpl(parent, namedNativeQueryAnnotation); } public JavaParameter buildJavaParameter(JpaContextModel parent, ParameterAnnotation resourceParameter) { return new HibernateJavaParameter(parent, resourceParameter); } public JavaDiscriminatorFormula buildJavaDiscriminatorFormula( HibernateJavaEntity hibernateJavaEntity, DiscriminatorFormulaAnnotation annotation) { return new JavaDiscriminatorFormulaImpl(hibernateJavaEntity, annotation); } @Override public JavaSpecifiedColumn buildJavaColumn(JavaSpecifiedColumn.ParentAdapter parent) { return new HibernateJavaColumnImpl(parent); } @Override public JavaManyToOneMapping buildJavaManyToOneMapping( JavaSpecifiedPersistentAttribute parent) { return new HibernateJavaManyToOneMapping(parent); } @Override public JavaOneToOneMapping buildJavaOneToOneMapping( JavaSpecifiedPersistentAttribute parent) { return new HibernateJavaOneToOneMapping(parent); } @Override public JavaOneToManyMapping buildJavaOneToManyMapping( JavaSpecifiedPersistentAttribute parent) { return new HibernateJavaOneToManyMapping(parent); } @Override public JavaManyToManyMapping buildJavaManyToManyMapping( JavaSpecifiedPersistentAttribute parent) { return new HibernateJavaManyToManyMapping(parent); } @Override public JavaSpecifiedJoinColumn buildJavaJoinColumn( JoinColumn.ParentAdapter owner, CompleteJoinColumnAnnotation joinColumnAnnotation) { return new HibernateJavaJoinColumnImpl(owner, joinColumnAnnotation); } @Override public JavaSpecifiedSecondaryTable buildJavaSecondaryTable(JavaSpecifiedSecondaryTable.ParentAdapter parent, SecondaryTableAnnotation tableAnnotation) { return new HibernateJavaSecondaryTableImpl(parent, tableAnnotation); } @Override public JavaSpecifiedJoinTable buildJavaJoinTable( JavaSpecifiedJoinTable.ParentAdapter parent) { return new HibernateJavaJoinTableImpl(parent); } @Override public JavaSpecifiedTable buildJavaTable(JavaTable.ParentAdapter parentAdapter) { return new HibernateJavaTableImpl(parentAdapter); } @Override public JavaBasicMapping buildJavaBasicMapping(JavaSpecifiedPersistentAttribute parent) { return new HibernateJavaBasicMappingImpl(parent); } @Override public JavaQueryContainer buildJavaQueryContainer(JavaQueryContainer.Parent parent) { return new HibernateJavaQueryContainerImpl(parent); } @Override public JavaGeneratorContainer buildJavaGeneratorContainer( JavaGeneratorContainer.Parent parentAdapter) { return new HibernateJavaGeneratorContainerImpl(parentAdapter); } public HibernateJavaTypeDefContainer buildJavaTypeDefContainer(JpaContextModel parent, JavaResourceAnnotatedElement annotatedElement) { return new HibernateJavaTypeDefContainerImpl(parent, annotatedElement); } public JavaIndex buildIndex(JpaContextModel parent, IndexAnnotation annotation) { return new IndexImpl(parent, annotation); } public ForeignKey buildForeignKey(JpaContextModel parent, ForeignKeyAnnotation annotation) { return new ForeignKeyImpl(parent, annotation); } public JavaType buildType(JpaContextModel parent, TypeAnnotation annotation) { return new TypeImpl(parent, annotation, getHibernateService()); } public JavaConverter buildJavaTypeConverter(JavaAttributeMapping parent, TypeAnnotation converterAnnotation, JavaConverter.ParentAdapter owner) { return new JavaTypeConverterImpl(parent, converterAnnotation, owner); } public HibernatePackageInfo buildJavaPackageInfo( HibernateClassRef hibernateClassRef, JavaResourcePackage jrpt) { return new HibernatePackageInfoImpl(hibernateClassRef, jrpt); } }