package com.hundsun.ares.studio.jres.basicdata.ui.editor.blocks;
import java.util.Arrays;
import java.util.HashMap;
import java.util.Map;
import org.apache.commons.lang.StringUtils;
import org.eclipse.emf.common.util.EList;
import org.eclipse.emf.ecore.EAttribute;
import org.eclipse.emf.ecore.EObject;
import org.eclipse.emf.ecore.EStructuralFeature;
import org.eclipse.swt.SWT;
import org.eclipse.swt.graphics.Color;
import org.eclipse.swt.widgets.Display;
import com.hundsun.ares.studio.core.IARESResource;
import com.hundsun.ares.studio.jres.basicdata.logic.util.JRESResProviderUtil;
import com.hundsun.ares.studio.jres.metadata.constant.IMetadataRefType;
import com.hundsun.ares.studio.jres.model.metadata.StandardField;
import com.hundsun.ares.studio.jres.model.metadata.decrypt.DeDictionaryItem;
import com.hundsun.ares.studio.jres.model.metadata.decrypt.DeDictionaryType;
import com.hundsun.ares.studio.jres.model.metadata.util.MetadataUtil;
import com.hundsun.ares.studio.ui.editor.viewers.EObjectColumnLabelProvider;
import com.hundsun.ares.studio.ui.editor.viewers.IEStructuralFeatureProvider;
public class BasicDataColumnLabelProvider extends EObjectColumnLabelProvider {
IARESResource resource;
public BasicDataColumnLabelProvider(
IEStructuralFeatureProvider attributeProvider,IARESResource resource) {
super(attributeProvider);
this.resource = resource;
}
public BasicDataColumnLabelProvider(EStructuralFeature attribute,IARESResource resource) {
super(attribute);
this.resource = resource;
}
@Override
public String getText(Object element) {
if(null == getEStructuralFeature(element)){
return "";
}
String text = StringUtils.EMPTY;
{
EStructuralFeature attribute = getEStructuralFeature(element);
EObject owner = getOwner(element);
Map<String , EAttribute> attMap = new HashMap<String, EAttribute>();
for(EAttribute att : owner.eClass().getEAllAttributes()){
attMap.put(att.getName(), att);
}
if (attribute != null && owner != null && attMap.get(attribute.getName()) != null) {
Object value = owner.eGet(attMap.get(attribute.getName()));
if (value == null) {
value = "";
}
text = String.valueOf(value );
}
}
StandardField stdField = JRESResProviderUtil.getMetadataModel(resource.getARESProject(), getEStructuralFeature(element).getName(),IMetadataRefType.StdField , StandardField.class);
if(stdField != null && StringUtils.isNotBlank(stdField.getDictionaryType())){
DeDictionaryType dicType = MetadataUtil.decrypt(stdField, resource).getDictionaryType();
EList<DeDictionaryItem> items = dicType.getItems();
String[] dictItemValues = StringUtils.split(StringUtils.defaultIfBlank(text, ""),",");
StringBuffer sb = new StringBuffer();
for(int i=0;i<dictItemValues.length;i++){
String value = dictItemValues[i];
for(DeDictionaryItem item : items){
if(StringUtils.equals(item.getValue(), value)){
if(i==dictItemValues.length-1){
sb.append(item.getValue() + "_" + item.getChineseName());
}else{
sb.append(item.getValue() + "_" + item.getChineseName()).append("||");
}
}
}
}
text = sb.toString();
}
return text;
}
@Override
public Color getBackground(Object element) {
if (resource.isReadOnly()) {
return Display.getDefault().getSystemColor(SWT.COLOR_GRAY);
}
return super.getBackground(element);
}
}