/* * Copyright (c) 2008, 2010-2012, 2015 Eike Stepper (Berlin, Germany) and others. * 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: * Martin Taal - initial API and implementation * Eike Stepper - maintenance */ package org.eclipse.emf.cdo.server.hibernate.teneo; import org.eclipse.emf.cdo.common.revision.CDORevision; import org.eclipse.emf.cdo.server.internal.hibernate.tuplizer.CDOCustomTypeUserType; import org.eclipse.emf.cdo.server.internal.hibernate.tuplizer.CDOENumIntegerType; import org.eclipse.emf.cdo.server.internal.hibernate.tuplizer.CDOENumStringType; import org.eclipse.emf.cdo.server.internal.hibernate.tuplizer.CDOIDExternalUserType; import org.eclipse.emf.cdo.server.internal.hibernate.tuplizer.CDORevisionTuplizer; import org.eclipse.emf.cdo.server.internal.hibernate.tuplizer.CDOSyntheticIdPropertyHandler; import org.eclipse.emf.cdo.server.internal.hibernate.tuplizer.CDOSyntheticVersionPropertyHandler; import org.eclipse.emf.cdo.server.internal.hibernate.tuplizer.FeatureMapEntryTuplizer; import org.eclipse.emf.cdo.spi.common.revision.CDOFeatureMapEntry; import org.eclipse.emf.teneo.annotations.pamodel.PAnnotatedEClass; import org.eclipse.emf.teneo.extension.ExtensionManager; import org.eclipse.emf.teneo.hibernate.mapper.EntityMapper; import org.eclipse.emf.teneo.hibernate.mapper.MappingContext; import org.eclipse.emf.teneo.simpledom.Element; /** * Mapping context for CDO. It provides cdo classes as propertyhandler etc. * * @author <a href="mtaal@elver.org">Martin Taal</a> * @since 3.0 */ public class CDOMappingContext extends MappingContext { public CDOMappingContext() { } /** Add a tuplizer element or not */ @Override public void addTuplizerElement(Element entityElement, PAnnotatedEClass aclass) { Element tuplizerElement = new Element("tuplizer").addAttribute("entity-mode", "dynamic-map").addAttribute("class", //$NON-NLS-1$//$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$ CDORevisionTuplizer.class.getName()); entityElement.add(0, tuplizerElement); tuplizerElement = new Element("tuplizer").addAttribute("entity-mode", "pojo").addAttribute("class", //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$ CDORevisionTuplizer.class.getName()); entityElement.add(0, tuplizerElement); if (entityElement.getAttributeValue("name") != null) { entityElement.addAttribute("proxy", CDORevision.class.getName()); entityElement.removeAttribute("name"); } } @Override public void setExtensionManager(ExtensionManager extensionManager) { super.setExtensionManager(extensionManager); extensionManager.registerExtension(EntityMapper.class.getName(), CDOEntityMapper.class.getName()); } @Override public String getComponentPropertyHandlerName() { return super.getComponentPropertyHandlerName(); } @Override public String getIdPropertyHandlerName() { return null; } @Override public String getPropertyHandlerName() { return super.getPropertyHandlerName(); } @Override public String getVersionPropertyHandlerName() { return null; } @Override public String getExternalUserType() { return CDOIDExternalUserType.class.getName(); } @Override public String getComponentFeatureMapTuplizer() { return FeatureMapEntryTuplizer.class.getName(); } @Override public String getFeatureMapEntryClassName() { return CDOFeatureMapEntry.class.getName(); } @Override public String getEnumUserType() { return CDOENumStringType.class.getName(); } @Override public String getEnumIntegerUserType() { return CDOENumIntegerType.class.getName(); } @Override public String getSyntheticIdPropertyHandlerName() { return CDOSyntheticIdPropertyHandler.class.getName(); } @Override public String getSyntheticVersionPropertyHandlerName() { return CDOSyntheticVersionPropertyHandler.class.getName(); } @Override public String getDynamicEnumUserType() { return CDOENumStringType.class.getName(); } @Override public String getDynamicEnumIntegerUserType() { return CDOENumIntegerType.class.getName(); } @Override public String getDefaultUserType() { return CDOCustomTypeUserType.class.getName(); } @Override public String getXSDDateUserType() { return super.getXSDDateUserType(); } @Override public String getXSDDateTimeUserType() { return super.getXSDDateTimeUserType(); } }