blob: c0c5504cc8c68d68b3e0fdcd404855886f08d652 [file] [log] [blame]
/*
* 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();
}
}