/**
* <copyright>
*
* Copyright (c) 2005, 2006, 2007, 2008 Springsite BV (The Netherlands) 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
* </copyright>
*
* $Id: AbstractAnnotator.java,v 1.5 2008/09/06 00:14:04 mtaal Exp $
*/
package org.eclipse.emf.teneo.annotations.mapper;
import org.eclipse.emf.ecore.EClass;
import org.eclipse.emf.teneo.PersistenceOptions;
import org.eclipse.emf.teneo.annotations.pamodel.PAnnotatedModel;
import org.eclipse.emf.teneo.annotations.pannotation.PannotationFactory;
import org.eclipse.emf.teneo.extension.ExtensionInitializable;
import org.eclipse.emf.teneo.extension.ExtensionManager;
import org.eclipse.emf.teneo.extension.ExtensionManagerAware;
import org.eclipse.emf.teneo.mapping.strategy.EntityNameStrategy;
import org.eclipse.emf.teneo.mapping.strategy.SQLNameStrategy;
import org.eclipse.emf.teneo.mapping.strategy.StrategyUtil;
/**
* The parent class of all annotator classes.
*
* @author <a href="mailto:mtaal@elver.org">Martin Taal</a>
* @version $Revision: 1.5 $
*/
public abstract class AbstractAnnotator implements ExtensionManagerAware, ExtensionInitializable {
protected PannotationFactory factory = PannotationFactory.eINSTANCE;
private ExtensionManager extensionManager;
private PAnnotatedModel annotatedModel;
private SQLNameStrategy sqlNameStrategy;
private EntityNameStrategy entityNameStrategy;
private PersistenceOptions persistenceOptions;
private EFeatureAnnotator eFeatureAnnotator;
/*
* (non-Javadoc)
*
* @see org.eclipse.emf.teneo.extension.ExtensionInitializable#initializeExtension()
*/
public void initializeExtension() {
sqlNameStrategy = getExtensionManager().getExtension(SQLNameStrategy.class);
entityNameStrategy = getExtensionManager().getExtension(EntityNameStrategy.class);
}
/** Method is called after all the important members have been set */
protected void initialize() {
}
/**
* Returns the entity name of the eclass, note that in case of maps a different approach is
* followed (the entity name of the value is returned.
*/
public String getEntityName(EClass eClass) {
return StrategyUtil.getEntityName(entityNameStrategy, persistenceOptions, annotatedModel, eClass);
}
/**
* @return the extensionManager
*/
public ExtensionManager getExtensionManager() {
return extensionManager;
}
/**
* @param extensionManager
* the extensionManager to set
*/
public void setExtensionManager(ExtensionManager extensionManager) {
this.extensionManager = extensionManager;
}
/**
* @return the annotatedModel
*/
public PAnnotatedModel getAnnotatedModel() {
return annotatedModel;
}
/**
* @param annotatedModel
* the annotatedModel to set
*/
public void setAnnotatedModel(PAnnotatedModel annotatedModel) {
this.annotatedModel = annotatedModel;
}
/**
* @return the factory
*/
public PannotationFactory getFactory() {
return factory;
}
/**
* @param factory
* the factory to set
*/
public void setFactory(PannotationFactory factory) {
this.factory = factory;
}
/**
* @return the sqlNameStrategy
*/
public SQLNameStrategy getSqlNameStrategy() {
return sqlNameStrategy;
}
/**
* @return the entityNameStrategy
*/
public EntityNameStrategy getEntityNameStrategy() {
return entityNameStrategy;
}
/**
* @return the persistenceOptions
*/
public PersistenceOptions getPersistenceOptions() {
return persistenceOptions;
}
/**
* @param persistenceOptions
* the persistenceOptions to set
*/
public void setPersistenceOptions(PersistenceOptions persistenceOptions) {
this.persistenceOptions = persistenceOptions;
}
/** Creates an annotator and sets all kinds of default info */
protected <T extends AbstractAnnotator> T createAnnotator(Class<T> clz) {
final T annotator = getExtensionManager().getExtension(clz);
annotator.setAnnotatedModel(annotatedModel);
annotator.setExtensionManager(getExtensionManager());
annotator.setPersistenceOptions(persistenceOptions);
annotator.setFactory(getFactory());
annotator.initialize();
return annotator;
}
/**
* @return the eFeatureAnnotator
*/
public EFeatureAnnotator getEFeatureAnnotator() {
return eFeatureAnnotator;
}
/**
* @param featureAnnotator
* the eFeatureAnnotator to set
*/
public void setEFeatureAnnotator(EFeatureAnnotator featureAnnotator) {
eFeatureAnnotator = featureAnnotator;
}
}