/******************************************************************************* * Copyright (c) 2013 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.orm.jpa2; import java.util.ArrayList; import org.eclipse.emf.ecore.EFactory; import org.eclipse.jpt.common.core.JptResourceType; import org.eclipse.jpt.common.core.internal.utility.ContentTypeTools; import org.eclipse.jpt.common.utility.internal.collection.CollectionTools; import org.eclipse.jpt.jpa.core.context.orm.NullOrmAttributeMappingDefinition; import org.eclipse.jpt.jpa.core.context.orm.OrmAttributeMappingDefinition; import org.eclipse.jpt.jpa.core.context.orm.OrmTypeMappingDefinition; import org.eclipse.jpt.jpa.core.context.orm.OrmXmlContextModelFactory; import org.eclipse.jpt.jpa.core.context.orm.OrmXmlDefinition; import org.eclipse.jpt.jpa.core.internal.context.orm.AbstractOrmXmlDefinition; import org.eclipse.jpt.jpa.core.internal.context.orm.OrmBasicMappingDefinition; import org.eclipse.jpt.jpa.core.internal.context.orm.OrmEmbeddableDefinition; import org.eclipse.jpt.jpa.core.internal.context.orm.OrmEmbeddedIdMappingDefinition; import org.eclipse.jpt.jpa.core.internal.context.orm.OrmEmbeddedMappingDefinition; import org.eclipse.jpt.jpa.core.internal.context.orm.OrmEntityDefinition; import org.eclipse.jpt.jpa.core.internal.context.orm.OrmIdMappingDefinition; import org.eclipse.jpt.jpa.core.internal.context.orm.OrmManyToManyMappingDefinition; import org.eclipse.jpt.jpa.core.internal.context.orm.OrmManyToOneMappingDefinition; import org.eclipse.jpt.jpa.core.internal.context.orm.OrmMappedSuperclassDefinition; import org.eclipse.jpt.jpa.core.internal.context.orm.OrmOneToManyMappingDefinition; import org.eclipse.jpt.jpa.core.internal.context.orm.OrmOneToOneMappingDefinition; import org.eclipse.jpt.jpa.core.internal.context.orm.OrmTransientMappingDefinition; import org.eclipse.jpt.jpa.core.internal.context.orm.OrmVersionMappingDefinition; import org.eclipse.jpt.jpa.core.internal.jpa2.context.orm.OrmElementCollectionMappingDefinition2_0; import org.eclipse.jpt.jpa.core.resource.orm.OrmFactory; import org.eclipse.jpt.jpa.core.resource.orm.XmlEntityMappings; import org.eclipse.jpt.jpa.core.resource.orm.v2_1.JPA2_1; /** * * @author Koen Aers * */ public class HibernateOrmXml2_1Definition extends AbstractOrmXmlDefinition { // singleton private static final OrmXmlDefinition INSTANCE = new HibernateOrmXml2_1Definition(); /** * Return the singleton */ public static OrmXmlDefinition instance() { return INSTANCE; } /** * Enforce singleton usage */ private HibernateOrmXml2_1Definition() { super(); } public JptResourceType getResourceType() { return ContentTypeTools.getResourceType( XmlEntityMappings.CONTENT_TYPE, JPA2_1.SCHEMA_VERSION); } public EFactory getResourceModelFactory() { return OrmFactory.eINSTANCE; } @Override protected OrmXmlContextModelFactory buildContextModelFactory() { return new HibernateOrmXml2_0ContextNodeFactory(); } @Override protected void addTypeMappingDefinitionsTo(ArrayList<OrmTypeMappingDefinition> definitions) { CollectionTools.addAll(definitions, TYPE_MAPPING_DEFINITIONS); } /** * Order should not matter here; but we'll use the same order as for Java. * @see Generic2_0JpaPlatformProvider */ protected static final OrmTypeMappingDefinition[] TYPE_MAPPING_DEFINITIONS = new OrmTypeMappingDefinition[] { OrmEntityDefinition.instance(), OrmEmbeddableDefinition.instance(), OrmMappedSuperclassDefinition.instance() }; @Override protected void addAttributeMappingDefinitionsTo(ArrayList<OrmAttributeMappingDefinition> definitions) { CollectionTools.addAll(definitions, ATTRIBUTE_MAPPING_DEFINITIONS); } /** * Order should not matter here; but we'll use the same order as for Java. * @see Generic2_0JpaPlatformProvider */ protected static final OrmAttributeMappingDefinition[] ATTRIBUTE_MAPPING_DEFINITIONS = new OrmAttributeMappingDefinition[] { OrmTransientMappingDefinition.instance(), OrmElementCollectionMappingDefinition2_0.instance(), OrmIdMappingDefinition.instance(), OrmVersionMappingDefinition.instance(), OrmBasicMappingDefinition.instance(), OrmEmbeddedMappingDefinition.instance(), OrmEmbeddedIdMappingDefinition.instance(), OrmManyToManyMappingDefinition.instance(), OrmManyToOneMappingDefinition.instance(), OrmOneToManyMappingDefinition.instance(), OrmOneToOneMappingDefinition.instance(), NullOrmAttributeMappingDefinition.instance() }; }