/**
*
*/
package com.hundsun.ares.studio.jres.clearinghouse.provider;
import org.apache.commons.lang.StringUtils;
import org.eclipse.emf.ecore.EObject;
import org.eclipse.emf.ecore.EStructuralFeature;
import org.eclipse.jface.viewers.LabelProvider;
import com.hundsun.ares.studio.core.IARESBundle;
import com.hundsun.ares.studio.core.IARESResource;
import com.hundsun.ares.studio.core.context.JRESContextManager;
import com.hundsun.ares.studio.core.model.ExtensibleModel;
import com.hundsun.ares.studio.core.model.util.Pair;
import com.hundsun.ares.studio.jres.database.oracle.constant.IOracleConstant;
import com.hundsun.ares.studio.jres.database.oracle.constant.IOracleRefType;
import com.hundsun.ares.studio.jres.model.database.oracle.OracleTableProperty;
import com.hundsun.ares.studio.jres.model.database.oracle.TableSpaceRelation;
import com.hundsun.ares.studio.ui.editor.extend.IEMLabelProviderExtension;
/**
* @author yanwj06282
*
*/
public class ExtendsLabelProvider extends LabelProvider implements IEMLabelProviderExtension {
private IARESBundle bundle;
private ExtensibleModel model;
private String key;
private EStructuralFeature feature;
public ExtendsLabelProvider(IARESBundle bundle,String key ,EStructuralFeature feature) {
super();
this.bundle = bundle;
this.key = key;
this.feature = feature;
}
@Override
public String getText(Object element) {
if (model != null) {
OracleTableProperty otp = (OracleTableProperty) model.getData2().get(IOracleConstant.TABLE_DATA2_KEY);
if (otp != null) {
String space = StringUtils.defaultString(otp.getSpace());
Pair<TableSpaceRelation, IARESResource> result = JRESContextManager.findResource(bundle, space, IOracleRefType.SpaceRelation, false);
if (result != null) {
EObject obj = result.first.getData2().get(key);
if (obj != null && obj.eClass().getEAllStructuralFeatures().contains(feature)) {
Object o = obj.eGet(feature);
return o == null ? StringUtils.EMPTY : o.toString();
}
}
}
}
return StringUtils.EMPTY;
}
@Override
public void setExtensibleModel(ExtensibleModel model) {
this.model = model;
}
}