blob: 20f4bb98dfc36776e24b665b3667b13cfc5fb798 [file] [log] [blame]
/***************************************************************************************************
* Copyright (c) 2005 Eteration A.S. 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
* https://www.eclipse.org/legal/epl-2.0/
*
* Contributors: Eteration A.S. - initial API and implementation
**************************************************************************************************/
package org.eclipse.jst.j2ee.ejb.annotation.internal.model;
import java.util.HashMap;
import java.util.Map;
import org.eclipse.jst.j2ee.ejb.EnterpriseBean;
import org.eclipse.jst.j2ee.internal.common.operations.INewJavaClassDataModelProperties;
import org.eclipse.wst.common.frameworks.datamodel.DataModelEvent;
import org.eclipse.wst.common.frameworks.datamodel.IDataModel;
import org.eclipse.wst.common.frameworks.datamodel.IDataModelListener;
/**
* @author naci
*
*/
public abstract class EnterpriseBeanDelegate implements IEnterpriseBean, IDataModelListener {
private final static String DEFAULT_DATA_MODEL="EnterpriseBeanDelegate.DATA_MODEL"; //$NON-NLS-1$
private Map dataModels;
private EnterpriseBean enterpriseBean;
public EnterpriseBeanDelegate()
{
dataModels = new HashMap();
}
/* (non-Javadoc)
* @see org.eclipse.jst.j2ee.ejb.annotation.internal.model.IEnterpriseBean#getEnterpriseBean()
*/
public EnterpriseBean getEnterpriseBean() {
return enterpriseBean;
}
/* (non-Javadoc)
* @see org.eclipse.jst.j2ee.ejb.annotation.internal.model.IEnterpriseBean#getVersionID()
*/
public int getVersionID() {
return enterpriseBean.getVersionID();
}
/* (non-Javadoc)
* @see org.eclipse.jst.j2ee.ejb.annotation.internal.model.IEnterpriseBean#getDataModel()
*/
public IDataModel getDataModel() {
return (IDataModel)dataModels.get(DEFAULT_DATA_MODEL);
}
/* (non-Javadoc)
* @see org.eclipse.jst.j2ee.ejb.annotation.internal.model.IEnterpriseBean#getDataModel()
*/
public void setDataModel(IDataModel dataModel) {
if(this.getDataModel() != null)
this.getDataModel().removeListener(this);
dataModel.addListener(this);
dataModels.put(DEFAULT_DATA_MODEL, dataModel);
enterpriseBean.setName(dataModel.getStringProperty(IEnterpriseBeanClassDataModelProperties.EJB_NAME));
enterpriseBean.setDescription(dataModel.getStringProperty(IEnterpriseBeanClassDataModelProperties.DESCRIPTION));
enterpriseBean.setDisplayName(dataModel.getStringProperty(IEnterpriseBeanClassDataModelProperties.DISPLAY_NAME));
enterpriseBean.setEjbClassName(dataModel.getStringProperty(INewJavaClassDataModelProperties.QUALIFIED_CLASS_NAME));
}
/* (non-Javadoc)
* @see org.eclipse.jst.j2ee.ejb.annotation.internal.model.IEnterpriseBean#getDataModelFor(java.lang.String)
*/
public IDataModel getDataModelFor(String feature) {
return (IDataModel)dataModels.get(feature);
}
public void setEnterpriseBean(EnterpriseBean enterpriseBean) {
this.enterpriseBean = enterpriseBean;
}
public String getJndiName() {
return getDataModel().getStringProperty(IEnterpriseBeanClassDataModelProperties.JNDI_NAME);
}
public String getEjbName() {
return getDataModel().getStringProperty(IEnterpriseBeanClassDataModelProperties.EJB_NAME);
}
public String getInterfaces() {
return getDataModel().getStringProperty(IEnterpriseBeanClassDataModelProperties.INTERFACES_AS_STRING);
}
/* (non-Javadoc)
* @see org.eclipse.jst.j2ee.ejb.annotation.model.ISessionBeanDelegate#getSimpleClassName()
*/
public String getSimpleClassName() {
return getDataModel().getStringProperty(INewJavaClassDataModelProperties.CLASS_NAME);
}
public String getDisplayName() {
return getDataModel().getStringProperty(IEnterpriseBeanClassDataModelProperties.DISPLAY_NAME);
}
/* (non-Javadoc)
* @see org.eclipse.jst.j2ee.ejb.annotation.model.ISessionBeanDelegate#getDescription()
*/
public String getDescription() {
return getDataModel().getStringProperty(IEnterpriseBeanClassDataModelProperties.DESCRIPTION);
}
public abstract String getTransactionType() ;
/**
*
* This method permits us to keep emf model for the bean
* in sync with the changes in the datamodel
*/
public void propertyChanged(DataModelEvent event) {
String property = event.getPropertyName();
Object propertyValue = event.getProperty();
if( enterpriseBean == null)
return;
if( IEnterpriseBeanClassDataModelProperties.EJB_NAME.equals(property)){
enterpriseBean.setName((String)propertyValue);
}else if(IEnterpriseBeanClassDataModelProperties.DESCRIPTION.equals(property)){
enterpriseBean.setDescription((String)propertyValue);
}else if(IEnterpriseBeanClassDataModelProperties.DISPLAY_NAME.equals(property)){
enterpriseBean.setDisplayName((String)propertyValue);
} else if(INewJavaClassDataModelProperties.CLASS_NAME.equals(property)){
enterpriseBean.setEjbClassName(event.getDataModel().getStringProperty(INewJavaClassDataModelProperties.QUALIFIED_CLASS_NAME));
}
}
}